7

PHPを使用して、画像内の特定の色を別の色に置き換える簡単なスクリプトを誰かが手伝ってくれますか? 例を次に示します (色が緑から黄色に変更されました)。

前 後

4

5 に答える 5

22

PHP で GD ライブラリを使用する場合は、imagefilter()にチェックを入れる必要があります。

手順は次のとおりです。

  • .PNG 画像から始めます。内側には白、外側にはアルファを使用します。
  • 0,255,0imagefilter($img, IMG_FILTER_COLORIZE, 0, 255, 0))は RGB カラー (この例では明るい緑) です。
  • アルファを保存し、結果を印刷します。

編集、作業コード、および明確化。

つまり、黒い線の外側にアルファを使用し、内側に白い線を使用するということです。サンプル画像は次のとおりです。 WhiteInAlphaOut

そして、ここに白い部分を着色するための実用的なコードがあります:

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);

: 色付けは白以外の部分でのみ機能するため、値を否定する必要があります。内側が黒で白枠の画像を使用することで、これを回避できます。

: このコードは、黒枠と白枠の画像でのみ機能します。

于 2012-08-29T13:26:11.320 に答える
1
<?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>

ここでは、青に最も近い色を見つけて、緑に置き換えます。

于 2012-08-29T13:30:11.867 に答える
1

私はこれを試しました:

<?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">

そして、すべての緑色のピクセルを置き換える代わりに、これを取得しました(シャツの色は変更されませんでした):

シャツは交換されませんでした

于 2012-08-29T13:43:24.463 に答える
1

答えは、画像の複数のバージョンを用意し、選択した色に応じて正しい画像をロードすることだと思いますか?

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;
}

お役に立てれば。

于 2012-08-29T13:20:49.280 に答える