Javascript canvas 中的 pixelcolor 和 PHP imagecolorat() 的区别


difference between pixelcolor in Javascript canvas and PHP imagecolorat()

我想找到jpeg图像像素的颜色

在 JavaScript 中,从图像创建一个画布并使用 getImageData 方法获取像素的颜色:

canvas.getContext("2d").getImageData( 0, 0, canvas.width, canvas.height );

和这个函数:

function getPixelColor( imagedata, x, y ) {
        var position = ( x + imagedata.width * y ) * 4, data = imagedata.data;
        return { r: data[ position ], g: data[ position + 1 ], b: data[ position + 2 ], a: data[ position + 3 ] };   
}

在PHP中,这3行代码:

    $img = imagecreatefromjpeg($imagepath) ;
    $rgb = imagecolorat($img, '1', '1');
    $colors = imagecolorsforindex($img, $rgb);

当检查结果是否相等时,我发现它们并不相等!

示例结果 :

Canvas getImageData:
red : 238, green : 147, blue : 118
PHP imagecolorat:
red : 244, green : 145, blue : 113

任何人都可以提出解决方案来改善我的结果?

谢谢

你看不同的像素。 1,1 在 phps 大小写中,0,0 在 javacripts 中