更新富文本编辑器
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* 富文本plugin微信小程序特殊扩展
|
||||
* @author sonve
|
||||
* @version 1.0.0
|
||||
* @date 2024-12-17
|
||||
*/
|
||||
import config from '../common/config.js'
|
||||
|
||||
/**
|
||||
* 微信小程序特有的OffscreenCanvas方法
|
||||
* @param {String} coverImageUrl 封面资源地址
|
||||
* @returns {Promise<String>} 处理后的封面图片的临时文件路径
|
||||
*/
|
||||
export function wxCreateCoverThumbnail(coverImageUrl) {
|
||||
const loadImage = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getImageInfo({
|
||||
src: coverImageUrl,
|
||||
success: (info) => {
|
||||
resolve(info)
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const imageInfo = await loadImage()
|
||||
|
||||
// 创建离屏 Canvas
|
||||
const canvas = uni.createOffscreenCanvas({
|
||||
type: '2d',
|
||||
width: imageInfo.width,
|
||||
height: imageInfo.height
|
||||
})
|
||||
const ctx = canvas.getContext('2d')
|
||||
|
||||
// 创建一个图片
|
||||
const coverImg = canvas.createImage()
|
||||
// 等待图片加载
|
||||
await new Promise((resolve) => {
|
||||
coverImg.onload = resolve
|
||||
coverImg.src = coverImageUrl // 要加载的图片 url
|
||||
})
|
||||
|
||||
// 绘制封面图片到离屏 Canvas
|
||||
ctx.drawImage(coverImg, 0, 0, canvas.width, canvas.height)
|
||||
|
||||
// 加载播放按钮图标
|
||||
const playIcon = canvas.createImage()
|
||||
// 等待图片加载
|
||||
await new Promise((resolve) => {
|
||||
playIcon.onload = resolve
|
||||
playIcon.src = config.video_playicon // 要加载的图片 url
|
||||
})
|
||||
|
||||
// 计算播放按钮的位置和大小
|
||||
// const playButtonSize = Math.min(canvas.width, canvas.height) * 0.15
|
||||
const playButtonSize = canvas.width * 0.15
|
||||
const playButtonX = (canvas.width - playButtonSize) / 2
|
||||
const playButtonY = (canvas.height - playButtonSize) / 2
|
||||
|
||||
// 确保播放按钮图标按比例缩放
|
||||
const iconAspectRatio = playIcon.width / playIcon.height
|
||||
const iconWidth = playButtonSize
|
||||
const iconHeight = iconWidth / iconAspectRatio
|
||||
|
||||
// 绘制播放按钮图标到离屏 Canvas
|
||||
ctx.drawImage(playIcon, playButtonX, playButtonY, iconWidth, iconHeight)
|
||||
|
||||
// 获取画完后的数据
|
||||
uni.canvasToTempFilePath({
|
||||
canvas: canvas,
|
||||
destWidth: canvas.width,
|
||||
destHeight: canvas.height,
|
||||
fileType: 'png',
|
||||
success: (res) => {
|
||||
resolve(res.tempFilePath)
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(new Error('Failed to convert canvas to image.'))
|
||||
}
|
||||
})
|
||||
} catch (error) {
|
||||
reject(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
wxCreateCoverThumbnail
|
||||
}
|
||||
Reference in New Issue
Block a user