使用 getImageData 和 putImageData 进行 HTML5 画布缩放

Posted

技术标签:

【中文标题】使用 getImageData 和 putImageData 进行 HTML5 画布缩放【英文标题】:HTML5 Canvas Scaling using getImageData and putImageData 【发布时间】:2012-10-13 08:26:31 【问题描述】:

有没有办法使用 getImageData 和 putImageData 来缩放画布。下面是代码的 sn-p。

var c=document.getElementById("myCanvas"); var c2=document.getElementById("myCanvas2"); var ctx=c.getContext("2d"); var ctx2=c2.getContext("2d"); ctx.fillStyle="红色"; ctx.fillRect(10,10,50,50); 函数复制() var imgData=ctx.getImageData(10,10,50,50); ctx2.translate(133.333,0); ctx2.scale(0.75,1); ctx2.putImageData(imgData,10,70);

我已经试过了http://jsbin.com/efixur/1/edit。

谢谢 阿杰

【问题讨论】:

【参考方案1】:

getImageData() 和 putImageData() 是为原始像素操作提供的,因此无法进行缩放(除非您在 javascript 中编写自定义缩放器)。

您想要的是使用drawImage(),然后使用另一个<canvas> 作为源而不是<img>

https://developer.mozilla.org/en-US/docs/Web/Guide/html/Canvas_tutorial/Using_images#Scaling

【讨论】:

以上是关于使用 getImageData 和 putImageData 进行 HTML5 画布缩放的主要内容,如果未能解决你的问题,请参考以下文章

可以使用 getImageData / putImageData 之类的 html 图像吗?

有啥方法可以在不使用 getImageData() 的情况下在 JavaScript 中找到像素的颜色?

Three.js/WebGL 和 2D Canvas -- 将 getImageData() 数组传递给 Three.DataTexture()

context.getImageData() 操作不安全

HTML5 Canvas getImageData 和同源策略

canvas关于getImageData跨域问题解决方法