3

透明なPNG画像があります。透明な領域は完全に透明なままである必要がありますが、他の領域は特定の色相で着色する必要があります。

GDを使用してこれを行うための最良の方法は何ですか?

乾杯、
ジェームズ

4

2 に答える 2

7

上記の解決策は私にはうまくいきませんでした。

ここでアルファ領域を赤で塗りつぶしています。私が信じていることは目的ではありません。目的は、画像の残りの部分に色合いを付け、アルファを変更せずに残すことです。(また、関数 imagecolorallocate の間違った使い方です。imagecolorallocatealpha を使用する必要があります。)

次のように imagefilter と colorize を使用することができました。

imagefilter ($image, IMG_FILTER_COLORIZE, 0, 255, 0, 30);

ティントを適用します。

于 2009-08-17T02:11:40.133 に答える
2

GD ライブラリはアルファ透明度をサポートしているため、これは問題になりません。これをまとめる方法は次のとおりです。これを微調整する必要があるかもしれませんが、要点はそこにあるはずです。

赤/緑/青は 0 ~ 255 です。アルファは 0 ~ 127 です (127 は完全に透明です)。このコードは、画像「original.png」に 50% の赤みを適用し、「output.png」として出力する必要があります。

<?php

$red = 255;
$green = 0;
$blue = 0;
$alpha = 63

$src_img = imagecreatefrompng("original.png");
$tint_img = imagecreatetruecolor(imagesx($im_src), imagesy($im_src));
$tintcolor = imagecolorallocate($tint_img, $red, $green, $blue, $alpha);
imagefill($tint_img, 0, 0, $tintcolor);
imagecopymerge($tint_img, $src_img, 0, 0, 0, 0, imagesx($im_src), imagesy($img_src), 100);
imagepng("output.png");

?>
于 2009-06-04T17:42:11.290 に答える