【发布时间】:2020-01-09 01:27:55
【问题描述】:
resizeImage() {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const maxW = 400;
const maxH = 400;
const image1 = new Image();
image1.src = this.uploadedImage;
const iw = image1.width;
const ih = image1.height;
const scale = Math.min((maxW / iw), (maxH / ih));
const iwScaled = iw * scale;
const ihScaled = ih * scale;
canvas.width = iwScaled;
canvas.height = ihScaled;
if (image1.complete) {
console.log('test');
context.drawImage(image1, 10, 10, iwScaled, ihScaled);
this.initialImage = canvas.toDataURL();
document.getElementById('imgcanvas').src = canvas.toDataURL();
this.cropImage(canvas.toDataURL());
} else {
image1.onload = function drawImage() {
console.log('what')
context.drawImage(image1, 10, 10, iwScaled, ihScaled);
this.initialImage = canvas.toDataURL();
document.getElementById('imgcanvas').src = canvas.toDataURL();
this.cropImage(canvas.toDataURL);
};
}
},
如何在完成 onload 事件后调用函数?因为我收到一个错误,指出 this.cropImage 不是函数。有没有人可以帮我解决这个错误,我需要在获取 url 后调用cropImage 函数?
!!!!更新:我看到 context.drawImage 仍然无法正常工作
【问题讨论】:
-
根本问题是
img调用.drawImage时还没有完成加载。你需要在你的图片组件中监听@load事件。 -
@YongQuan ya 我明白了,并已修复,但出现了一个错误,我无法在 onload 事件后调用函数,正如我在上述问题中编辑后所说的那样?
标签: javascript vue.js canvas antd