PHP Gdと組み合わせて次のことをしたいです。残念ながらImageMagickはオプションではありませんが、これは非常に一般的な問題のようで、があります解決策として、私はそれを見つけることができないようです。
背景が透明なPNGを作成したい。次に、その上に長方形を描き、その上に画像をコピーして、テキストを追加します。これを行う1つの方法は次のとおりです。
$image = ImageCreateTrueColor (800, 600);
imagecolortransparent ($image, 0); //0 is pure black, the default fill color
imagerectangle (...);
//code to copy an image
imagettftext ($image, ...);
imagepng ($image);
これは、コピーされた画像の一部が黒であるか、テキストが黒である可能性があることを除いて、正常に機能します。これも透明になります。これは私がしないでください欲しいものです。
imagefill ($image, 0,0, 0x7FFF0000);
imagetransparent ($image, 0x7FFF0000);
上記のコードは私がオンラインで見つけたもので、赤で塗りつぶしてから赤を透明にします。繰り返しますが、これにより、画像内のすべての赤が透明になります。発生しにくい色を選ぶこともできますが、保証はできません。
足りないものはありますか?これは修正できますか?返信ありがとうございます!
imagecolortransparent
は、単色の透明度が厄介なため、画像をマージする場合はおそらくここで必要なものではありません。
代わりに、次のような透明な塗りつぶしマスクで試してください。
<?php
$image = imagecreatetruecolor(100, 100);
// Transparent Background
imagealphablending($image, false);
$transparency = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparency);
imagesavealpha($image, true);
// Drawing over
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 25, 25, 75, 75, $black);
header('Content-Type: image/png');
imagepng($image);