画像の特定のピクセルを見つける必要があります。「89 21 24」としましょう。
ネストされた 2 つのサイクルを使用して画像を移動しています。
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 を 1 つずつではなく、たとえば 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;
}