javascript - HTML Canvas Img 缩放以某种方式不起作用

标签 javascript html image canvas resize

我正在尝试通过 JavaScript 缩放本地镜像,如下所示:

function resizeImage(file, func){
    var canvas = document.createElement('canvas');
    var img = new Image();
    img.onload = function () {
        var factor = img.width/800;
        canvas.width = 800;
        canvas.height = img.height/factor;
        ctx = canvas.getContext('2d');
        ctx.scale(factor, factor);
        ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
        func(canvas.toDataURL());
    }
    img.src = file.dataload; //file is an json-Object and dataload a dataURI
}

不知何故,canvas.toDataURL() 返回的数据不会以任何方式调整大小。 我仔细检查了 canvas.width 和 canvas.height 是否是正确的计算尺寸。

知道出了什么问题吗?

最佳答案

尝试删除 scale() 方法,因为它只影响绘制到 Canvas 位图的内容,而不影响位图本身(drawImage() 在任何情况下都会影响正确缩放图像)。

您需要使用 widthheight 属性缩放 Canvas 。这些是使用 toDataURL() 获得的维度的基础。

var factor = img.width/800;
var scale = 2;
canvas.width = 800 * scale; 
canvas.height = img.height/factor * scale;

如果您需要 Canvas 元素在屏幕上保持不变,也可以对其应用CSS:

canvas.style.width = 800 + 'px'; 
canvas.style.height = img.height/factor + 'px';

关于javascript - HTML Canvas Img 缩放以某种方式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21223932/

相关文章:

javascript - 每次重新加载网页时选项都会随机播放

javascript - 如何通过 Google 策略处理来自 dpd-passport 的回调/重定向?

jquery - 具有灵活标签的 Css 无表格形式

python tkinter : how to work with pixels?

html - CSS:悬停时更改颜色

javascript - 使用 JS 更改文本选择突出显示

javascript - 点击事件在 iPad 上不起作用,但在桌面和移动设备上起作用

javascript - 在没有浏览器滚动的情况下,div 比浏览器宽

javascript - 如何在 html 或 javascript 中将 Img 附加到 Img

ios - OpenGL ES渲染为UIImage,图像为黑色