0

PHP で画像の色の x、y 位置を取得する方法はありますか? 例:この画像では

ここに画像の説明を入力

開始点、つまり RED の x、y 位置を取得できますか?

ユーザーが画像の特定の部分の色を変更するオプションを作成する必要があります。したがって、ユーザーがこの画像の赤色を青色に変更したい場合は、imagefill() 関数を使用して色を変更しますが、 x、y座標が必要です。これが理にかなっていることを願っています。

4

1 に答える 1

2

次のようなことを試してください:

// applied only to a PNG images, You can add the other format image loading for Yourself
function changeTheColor($image, $findColor, $replaceColor) {
    $img = imagecreatefrompng($image);
    $x = imagesx($img);
    $y = imagesy($img);
    $newImg = imagecreate($x, $y);
    $bgColor = imagecolorallocate($newImg, 0, 0, 0); 

    for($i = 0; $i < $x; $i++) {
        for($j = 0; $j < $y; $j++) {
            $ima = imagecolorat($img, $i, $j);
            $oldColor = imagecolorsforindex($img, $ima);
            if($oldColor['red'] == $findColor['red'] && $oldColor['green'] == $findColor['green'] && $oldColor['blue'] == $findColor['blue'] && $oldColor['alpha'] == $findColor['alpha'])
                $ima = imagecolorallocatealpha($newImage, $replaceColor['red'], $replaceColor['green'], $replaceColor['blue'], $replaceColor['alpha']);
            }
            imagesetpixel($newImg, $i, $j, $ima);
        }
    }

    return imagepng($newImg);
}

ここでは、$findColor$replaceColorが次の構造の配列であることを期待しています。

$color = array(
    'red' => 0,
    'green' => 0,
    'blue' => 0,
    'alpha' => 0,
);

コードを試しませんでしたが、少なくとも正しい方法を示すはずです。すべてのピクセルをループし、そのピクセルの色を確認し、探している色である場合は、$replaceColor. そうでない場合は、まったく同じ色が新しい画像のまったく同じ位置に配置されます。

2 つのforループを使用するため、大きな画像では非常に時間とメモリを消費する可能性があります。

于 2012-11-05T17:22:28.603 に答える