0

私が取り組んでいる透かしスクリプトがあります。結果はPNGおよびJPG画像では良好ですが、gif画像ではあまり良くありません。PHPとGDを使用しています

以下に、透かしの品質の違いを示します。

これを改善する方法を知っている人はいますか?

私が使用しているgifバージョンの場合

$image = imagecreatefromgif($source_file);
imagecopymerge($image, $watermark, $x, $y, 0, 0, $water_width, $water_height, 65);
imagegif($image, $source_file);

gif 画像 = 低品質の gif 画像 http://img2.pict.com/fd/46/00/1471179/0/gif.gif

jpg 画像 = 良い jpg 画像 http://img2.pict.com/82/a1/5a/1471181/0/jpg.jpg

4

3 に答える 3

5

GIF 画像には、最大 256 色を含めることができる固定パレットがあります。ここでの問題はおそらく、挿入する画像がターゲット画像で使用できない色を使用していることです。

私はこれを試したことはありませんが、試してみる価値があるかもしれません。最初に gif 画像をトゥルー カラー画像に変換してから、透かしを入れてから gif に戻すことができます。

$image = imagecreatefromgif($source_file);
// create a true color image of the same size
$image2 = imagecreatetruecolor(imagesx($image), imagesy($image));
// copy the original gif image on to the true color image
imagecopy($image2, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
// copy the watermark onto the new true color image
imagecopymerge($image2, $watermark, $x, $y, 0, 0, $water_width, $water_height, 65);
// write the new image to disk
imagegif($image2, $source_file);

試してみて、違いがあるかどうかを確認してください。

役立つパレット操作関数もいくつかあります。

  1. imagecolormatch()
  2. imagetruecolortopalette()
  3. imagepalettecopy()

それらをどのように適用するかはわかりませんが、結果を改善するためにできることがいくつかあると思います.

于 2009-08-15T21:51:21.027 に答える
0

カラー パレットが 256 色であるため、GIF 画像は見栄えがよくありません。MrMage が言うように、カラー マッピングは画像の本来の色を厳密に近似します。PNG を使用したほうがよいでしょう。PNG は透過性をサポートしています。

于 2009-08-15T21:52:56.267 に答える