PHP从8x8 GD图像创建灰度颜色的字节数组

PHP从8x8 GD图像创建灰度颜色的字节数组,php,arrays,image-processing,gd,Php,Arrays,Image Processing,Gd,我有一个使用imagecreatefromjpeg从PHP加载的图像。 我已成功地将图像大小调整为8x8像素,并已成功地将图像灰度化($img)。现在我想把每个像素的灰度值放入一个数组($ary) 我知道这个(伪代码): for($x=0;$xIf)如果您只想要颜色,而不关心它们在哪里:imagetruecolortopalette=>imagecolorstotal=>imagecolorsforindex@Wrikken,谢谢-看起来imagecolorsforindex返回一个rgb数组。

我有一个使用imagecreatefromjpeg从PHP加载的图像。 我已成功地将图像大小调整为8x8像素,并已成功地将图像灰度化($img)。现在我想把每个像素的灰度值放入一个数组($ary)

我知道这个(伪代码):


for($x=0;$xIf)如果您只想要颜色,而不关心它们在哪里:
imagetruecolortopalette
=>
imagecolorstotal
=>
imagecolorsforindex
@Wrikken,谢谢-看起来imagecolorsforindex返回一个rgb数组。是的,但作为其灰度,只需将其转换为使用r(或g或b,它们应该是相同的)对于灰度来说应该足够了。如果这还不够的话,你当前的解决方案就是你目前能做的最好的解决方案。我意识到我无论如何都必须循环它们,才能将它们从RGB转换为256位值。我不确定哪一个更快:imagecreatefromstring然后循环结果,或者只是使用imagecolorat循环。f第一个似乎更可行,因为结果集是由C而不是PHP填充的。我将尝试这两种方法并报告我的发现。我当前的RGB-to-gray公式使用的是我见过的比率:r*.299、g*.587和b*.114。如果我对所有过程使用相同的公式,我相信结果将是一致的。我正在提取一个感知哈希。
for($x=0 ; $x<7; $x++){
    for($y=0 ; $y<7; $y++){
        $gry = imagecolorat($img, $x, $y)
        array_push($ary, $gry);
    }
}