PHPを使用して、画像内の特定の色を別の色に置き換える簡単なスクリプトを誰かが手伝ってくれますか? 例を次に示します (色が緑から黄色に変更されました)。
PHP で GD ライブラリを使用する場合は、imagefilter()にチェックを入れる必要があります。
手順は次のとおりです。
imagefilter($img, IMG_FILTER_COLORIZE, 0, 255, 0))
は RGB カラー (この例では明るい緑) です。編集、作業コード、および明確化。
つまり、黒い線の外側にアルファを使用し、内側に白い線を使用するということです。サンプル画像は次のとおりです。
そして、ここに白い部分を着色するための実用的なコードがあります:
header('Content-Type: image/png');
/* RGB of your inside color */
$rgb = array(0,0,255);
/* Your file */
$file="../test.png";
/* Negative values, don't edit */
$rgb = array(255-$rgb[0],255-$rgb[1],255-$rgb[2]);
$im = imagecreatefrompng($file);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_COLORIZE, $rgb[0], $rgb[1], $rgb[2]);
imagefilter($im, IMG_FILTER_NEGATE);
imagealphablending( $im, false );
imagesavealpha( $im, true );
imagepng($im);
imagedestroy($im);
注: 色付けは白以外の部分でのみ機能するため、値を否定する必要があります。内側が黒で白枠の画像を使用することで、これを回避できます。
注: このコードは、黒枠と白枠の画像でのみ機能します。
<?php
header("Content-type: image/png");
$im = imagecreate(200, 200)
imagefill($im, 0, 0, $red);
// above could come from an uploaded image
// find a blue in the image
$newblue = imagecolorclosest($im, 0, 0, 255);
// change it to green
imagecolorset($im, $newblue, 0, 255, 0);
imagepng($im);
imagedestroy($im);
?php>
ここでは、青に最も近い色を見つけて、緑に置き換えます。
私はこれを試しました:
<?php
$imgname = "1.gif";
$im = imagecreatefromgif ($imgname);
$index = imagecolorexact ($im,0,128,0);
imagecolorset($im,$index,240,255,0);
$imgname = "result.gif";
imagegif($im,$imgname);
?>
<img src="result.gif">
そして、すべての緑色のピクセルを置き換える代わりに、これを取得しました(シャツの色は変更されませんでした):
答えは、画像の複数のバージョンを用意し、選択した色に応じて正しい画像をロードすることだと思いますか?
switch ステートメントを使用して正しい画像をロードできます
//get selected colour
switch ($colour) {
case "red":
echo "<img src='RED IMAGE' ";
break;
case "blue":
echo "<img src='blue IMAGE' ";
break;
case "green":
echo "<img src='green IMAGE' ";
break;
}
お役に立てれば。