gpt4 book ai didi

javascript - 严格模式下ImageData数据赋值

转载 作者:行者123 更新时间:2023-11-29 15:00:16 25 4
gpt4 key购买 nike

假设我有这样的 PoC 代码片段,用于处理 canvas 原始像素数据

(function(){
'use strict';
var img = document.createElement("canvas").getContext("2d").getImageData(0, 0, 1, 1);
var imgData = img.data;
img.data = imgData;
})();

问题是我得到了一个合理的错误(我已经检查了最新的 Chrome 和 FF)

TypeError: Cannot assign to read only property 'data' of #<ImageData>

所以,我可以禁用严格模式,一切都会变得完美,但有没有可能在严格模式下实现这一点?也许我只是没有找到有关 data setter 的文档?

谢谢!

最佳答案

阅读代码中的注释:

(function(){
'use strict';
var canvas=document.createElement("canvas");
// canvas object must have size
var w=canvas.width=100;
var h=canvas.height=50;
var ctx=canvas.getContext("2d");
var imgData=ctx.getImageData(0,0,w,h);
// In next line you retrieve array of RGBA values where each array element
// is value between 0 and 255. Array size is size imgData.width*imgData.height
var pixelData = imgData.data;
pixelData[0] = 128; // Store 128 for Red channel of first pixel: (0,0)
pixelData[5] = 128; // Store 128 for Green channel of second pixel
imgData.data = pixelData; // Error
})();

您还可以使用 putImageData 方法使用另一个 CanvasImageData 对象修改 CANVAS 的内容:

  var newImgData=ctx.createImageData(w,h);
ctx.putImageData(newImgData,0,0);

阅读 MDN 中的 CanvasImageData:https://developer.mozilla.org/en/DOM/ImageData在 MSDN 中:http://msdn.microsoft.com/en-us/library/ie/ff974957%28v=vs.85%29.aspx

MSDN 中的 HTML5 Canvas :http://msdn.microsoft.com/en-us/library/ie/hh771733%28v=vs.85%29.aspx

关于javascript - 严格模式下ImageData数据赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com