我需要找到图像的特定像素。假设“89 21 24”。
我正在使用两个嵌套循环来遍历图像:
for( $y=$inity; $y<$h; $y++) {
for( $x=$initx; $x<$w; $x++) {
$pixel = getpixelat($img,$x,$y);
if ($pixel == "892124" and getpixelat($img,$x+1,$y) == "1212224") {
$px = $x; $py = $y;
break 2;
}
}
我想通过增加 $y 和 $x 来获得更快的算法,而不是一一增加,而是例如 4 乘 4。(快 16 倍?)当然,我需要确切地知道构建 4x4 正方形的像素。
我会这样做:
if ($pixel == "" and nextpixel...) {
$px = $x - 1; $py = $y -...;
}
//etc.
有没有更聪明的方法来实现这一目标?
编辑:
这是getpixelat函数:
function getpixelat($img,$x,$y) {
$rgb = imagecolorat($img,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
return $r.$g.$b;
}