gpt4 book ai didi

Javascript 像素操作 : These aren't my colors

转载 作者:可可西里 更新时间:2023-11-01 13:16:01 25 4
gpt4 key购买 nike

我知道这样的问题已经被问过好几次了,但我还没有找到我要找的东西。我正在将图像读入 Canvas 对象(在 javascript 中)并尝试操作一些特定像素。例如,我正在寻找颜色 RGB:224 64 102,并尝试将其更改为不同的颜色。

我可以对图像应用灰度,所以我知道操作有效,但代码没有找到任何具有这种颜色的像素(Adobe Illustrator 所说的是 RGB 颜色)。我希望我只是遗漏了一个小细节。代码如下,希望有人能看到。

谢谢!

var canvas = document.getElementById("testcanvas");
var canvasContext = canvas.getContext('2d');


imgObj = new Image();
imgObj.src = "ss.jpg";
//imgObj.width = 200;
//imgObj.height = 200;
var imgW = imgObj.width;
var imgH = imgObj.height;
canvas.width = imgW;
canvas.height = imgH;
canvasContext.drawImage(imgObj, 0, 0);

var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);

//hash_table = {};

for (var x = 0; x < imgPixels.width; x++) {
for (var y = 0; y < imgPixels.height; y++)
{
var i = (y * imgPixels.width + x) * 4;
//Want to go from:
//E04066
//224 64 102 -> to
//134 135 185

if(imgPixels.data[i] == 224 && imgPixels.data[i+1] == 64 && imgPixels.data[i+2] == 102) {
imgPixels.data[i] = 134;
imgPixels.data[i+1] = 135;
imgPixels.data[i+2] = 185;
}

//To greyscale:
/*
var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
imgPixels.data[i] = avg;
imgPixels.data[i + 1] = avg;
imgPixels.data[i + 2] = avg;
imgPixels.data[i + 3] = 255;
*/
}
}
canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
//color_count = 0;
//for(key in hash_table) {
// color_count++;
//}
//console.log(color_count);
//console.log(hash_table);
return canvas.toDataURL();

});
});

</script>
</head>
<body>
<canvas id="testcanvas"></canvas>

<img src="ss.jpg" id="testimage"/>

最佳答案

您可能无法从 Canvas 获取图像数据,因为 Canvas 已被跨源数据污染。

如果那个文件 ss.jpg 是本地的,那么它将无法工作。我想情况就是这样。

在 SO 或 Google 上搜索 canvas cross-origin 以获得更多信息。那里有很多。这里有一些解释:

http://simonsarris.com/blog/480-understanding-the-html5-canvas-image-security-rules

这是一个关于在您的服务器上启用它的网站:

http://enable-cors.org/


否则,您的代码可以正常工作。这是将一个小红点转换为一个小绿点的相同代码:

http://jsfiddle.net/RBaxt/

关于Javascript 像素操作 : These aren't my colors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236635/

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