提交 b35d8021 authored 作者: 杨斌基's avatar 杨斌基

feat(上报内容): 水印文字大小动态计算自适应

上级 0bafd69b
......@@ -735,31 +735,43 @@ export default {
const { key } = JSON.parse(res);
// 水印文字大小,单位: 缇 ,等于1/20磅,默认值是240缇,参考DPI为72。
// 1px(像素) = 0.75 磅
// 1 / 20 * (1 / .75) * 240 => 16
// 所以 240 缇约等于 16px
// 1px => 15 缇
// 水印文字大小,单位: 缇,等于1/20磅,默认值是240缇,参考DPI为72。
// 240 缇约等于 12px
// 1px => 20 缇
const isImage = type === 'image'
const tPerPx = 20
let scale = 1
let imageWidth = 0
if (isImage) {
const { width, height } = await getImageInfo(tempFilePath)
// 拿到短边参考
const ref = Math.max(width, height)
// 以宽度作参考
const ref = width
const phoneWidth = 375
scale = ref / phoneWidth
imageWidth = width
}
const getRealSize = value => ~~(value * scale)
const fontSize = getRealSize(240 + 30)
const getRealSize = value => ~~(value * scale) // 数值只支持整数
// 文字最多的文本
const refText = myAddress.length > myDay.length ? myAddress : myDay
const dx = getRealSize(15)
const availableContentWidth = imageWidth - (dx * 2)
const smallSizeChars = refText.match(/\w|\s/g)
const realCharCount = refText.length - (smallSizeChars.length / 2)
const availableFontSize = ~~(availableContentWidth / realCharCount * tPerPx)
const normalFontSize = getRealSize(16 * tPerPx)
const fontSize = Math.min(availableFontSize, normalFontSize)
const timeDy = getRealSize(10)
const addressLineHeight = 1.3
const addressDy = ~~((timeDy + (fontSize / tPerPx)) * addressLineHeight)
media.url =
type === 'image'
? `${data.qn_domain}${key}?imageMogr/auto-orient|watermark/3/text/${baseEncode(myAddress)
.replace(/\+/g, '-')
.replace(/\//g, '_')}/font/5b6u6L2v6ZuF6buR/fontsize/${fontSize}/fill/I0ZGRkZGRg==/dissolve/100/gravity/SouthWest/dx/${getRealSize(15)}/dy/${getRealSize(30)}/text/${baseEncode(myDay)
.replace(/\//g, '_')}/font/5b6u6L2v6ZuF6buR/fontsize/${fontSize}/fill/I0ZGRkZGRg==/dissolve/100/gravity/SouthWest/dx/${dx}/dy/${addressDy}/text/${baseEncode(myDay)
.replace(/\+/g, '-')
.replace(/\//g, '_')}/font/5b6u6L2v6ZuF6buR/fontsize/${fontSize}/fill/I0ZGRkZGRg==/dissolve/100/gravity/SouthWest/dx/${getRealSize(15)}/dy/${getRealSize(10)}`
.replace(/\//g, '_')}/font/5b6u6L2v6ZuF6buR/fontsize/${fontSize}/fill/I0ZGRkZGRg==/dissolve/100/gravity/SouthWest/dx/${dx}/dy/${timeDy}`
: `${data.qn_domain}${key}`;
media.status = 'finish';
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论