1

次のコードを使用して正確なテキストメッセージで画像を作成するために画像の作成機能を使用しています

<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img
$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

出力は次のようになります

こんにちはエジプト

今私の質問は、テキストだけでなく画像をその上に書き込むことができる方法があるので、同じパス(flag.gif 国旗)で画像にフラグを立てて、私の直後に$messageこのように書き込みたい場合

こんにちはエジプトの旗

これは可能であり、どうすればよいのでしょうか。〜どうもありがとう

imagecopy関数 を使用するという@MarcBのアイデアに基づいて更新

<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img


$src = imagecreatefromjpeg('flag.jpg');// new image will add
imagecopy($image, $src, 120, 10, 0, 0, 32, 20);

$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);

imagegif($image);
imagedestroy($image);
?>

出力がトゥルーカラーではない理由:(

ここに画像の説明を入力してください

この新しい問題についての助け〜ありがとう

4

2 に答える 2

4

の助けを借りてSurreal DreamsMarc B これはうまくいきます

<?PHP
header ("Content-type: image/gif");

$image=imagecreatefromjpeg("myimage.jpg"); // will be background img

$src = imagecreatefromjpeg('flag.jpg');// new image will add

imagecopy($image, $src, 120, 10, 0, 0, 32, 20);


$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";

imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

出力

ここに画像の説明を入力してください

私は次の機能を学ぶべきだった

  1. imagecopy
  2. imagecreatefromjpeg
  3. imagecreatefromgif
于 2012-06-12T22:34:19.867 に答える
1

imagecopy()は、画像のパレット間の違いを適切に処理する必要があります。ただし、GIF形式は256色以上をサポートしておらず、パレットベースの画像で動作する場合はGDもサポートしていません。GDが新しい色を使用しようとしたときに256個のパレットエントリがすでに存在する場合、GDは最も近いものを選択し、表示される結果を生成できます。

この問題を回避するには、imagecreatetruecolor()を使用して、メモリ内に24ビットのトゥルーカラー画像を作成する必要があります。次に、imagecopy()を使用して各GIF画像(背景を含む)を挿入し、imagepng()を使用してPNG出力を生成できます。これは、JPEGよりも線画に適し、GIFよりも優れた圧縮を提供し、256色以上をサポートできます。

于 2012-06-12T22:50:25.000 に答える