鸿蒙 P70 canvas.createImage 设置 base64 Data URI 失败
async drawMainImage(ctx: CanvasContext, canvas: Canvas, width: number): Promise {
const padding = POSTER_CONSTANTS.PADDING;
const imageWidth = width - padding * 2;
const imageHeight = imageWidth * POSTER_CONSTANTS.IMAGE_HEIGHT_RATIO;
return new Promise((resolve, reject) => {
const img = canvas.createImage();
img.onload = () => {
const drawX = padding;
const drawY = padding;
const drawWidth = imageWidth;
const drawHeight = imageHeight;
// 保存当前上下文状态
ctx.save();
// 创建圆角路径并设置裁剪区域
const radius = this.data.mainImageRadius || POSTER_CONSTANTS.MAIN_IMAGE_RADIUS;
this.drawImageRoundedRect(ctx, drawX, drawY, drawWidth, drawHeight, radius);
ctx.clip();
// 绘制图片
ctx.drawImage(img, drawX, drawY, drawWidth, drawHeight);
// 恢复上下文状态
ctx.restore();
// 计算主图底部位置,用于绘制底部信息
const mainImageBottom = drawY + drawHeight;
resolve(mainImageBottom);
};
img.onerror = () => reject(new Error('图片加载失败'));
img.src = this.data.imageUrl;
});
}