透明なPNG画像があります。透明な領域は完全に透明なままである必要がありますが、他の領域は特定の色相で着色する必要があります。
GDを使用してこれを行うための最良の方法は何ですか?
乾杯、
ジェームズ
透明なPNG画像があります。透明な領域は完全に透明なままである必要がありますが、他の領域は特定の色相で着色する必要があります。
GDを使用してこれを行うための最良の方法は何ですか?
乾杯、
ジェームズ
上記の解決策は私にはうまくいきませんでした。
ここでアルファ領域を赤で塗りつぶしています。私が信じていることは目的ではありません。目的は、画像の残りの部分に色合いを付け、アルファを変更せずに残すことです。(また、関数 imagecolorallocate の間違った使い方です。imagecolorallocatealpha を使用する必要があります。)
次のように imagefilter と colorize を使用することができました。
imagefilter ($image, IMG_FILTER_COLORIZE, 0, 255, 0, 30);
ティントを適用します。
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");
?>