0

このコードを使用して画像に透かしを入れ、透かしを付けて保存しています。GIF画像に透かしを入れようとすると、そのgifの最初のフレームしか取得できないという問題があります。

imagecopy(
   // source
   $main_image,
   // destination
   $logoImage,
   // destination x and y
   $imageWidth-$logoWidth, $imageHeight-$logoHeight,
   // source x and y
   0, 0,
   // width and height of the area of the source to copy
   $logoWidth, $logoHeight);
    if($type == "png"){imagepng($main_image, $new_path);}
    if($type == "jpeg"){imagejpeg($main_image, $new_path);}
    if($type == "gif"){imagegif($main_image, $new_path);}

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

image*PHPの関数は GD ライブラリを使用します。PHP マニュアルには記載されていませんが、GD ライブラリは GIF アニメーションをサポートしていません (ただし、サイトの多数のコメントで言及されています)。現時点では、GD プロジェクトのWeb サイトも追加の確認のために利用できません。

または、ImageMagick利用可能な場合exec()は、アプリケーションを呼び出しconvertて透かしとアニメーションのサーバー側をレンダリングするために使用できます (参照)。

$animated_gif = "source.gif";
$gif_with_watermark = "destination.gif";
$watermark = "watermark.png";

$cmd = 'convert '
       . escapeshellarg($animated_gif)
       . ' -coalesce -gravity South -geometry +0+0 null: '
       . escapeshellarg($watermark)
       . ' -layers composite -layers optimize '
       . escapeshellarg($gif_with_watermark);
exec($cmd);
于 2012-08-31T21:15:49.057 に答える