2011-07-03 20 views
4

PNG画像があります。開いてからGIF画像として出力しようとしています。しかし、これを行うと透明度が失われ、背景が黒くなります。画像をPNG形式で出力すると動作しますが、画像をPNG形式で開き、GIF形式で出力する必要があります。PNGをGIFに変換するときの黒い背景

これは私がこれまで持っているものです。

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

$new_img = imagecreatefrompng($image); 
imagealphablending($new_img, false); 
imagesavealpha($new_img, true); 
imagegif($new_img); 
?> 

はしかし、imagepng($のnew_img)は、背景の透明性を節約できますが、出力はGIFとしません。

+0

ああ、私は最初の場所でのGIFとしてイメージを作成し、これを行う場合は、それが正常に動作します。だから私のブラウザではありません。それはPNGからGIFへの移行です。 – TheEnigmaMachine

+2

@sombe - 「ほとんどの主要なブラウザはgifの透過性をサポートしていません」と私は1800年以来、すべてのブラウザがGIFの透過性をサポートしていると思います。 – vcsjones

答えて

0

は、だから私はこの仕事を得ることができました。誰もがよりよい解決策を持っている場合は私に知らせてください:

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

    $new_img = imagecreatefrompng($image); 
    $background = imagecreatefrompng("background.png"); 
    imagecopyresampled($background, $new_img, 0, 12, 0, 0, 100, 125, 100, 125); 
    $c = imagecolorat($background, 0, 0); 
    imagefilledrectangle($background, 0, 112, 100, 125, $c); 
    imagecolortransparent($background, $c); 
    imagegif($new_img); 
    ?> 
0

は、このコードを試してみてください。

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

$new_img = imagecreatefrompng($image); 
$trans_color = imagecolortransparent($new_img); 
$trans_index = imagecolorallocate($new_img, $trans_color['red'], $trans_color['green'], $trans_color['blue']); 
imagecolortransparent($new_img, $trans_index); 
imagegif($new_img); 
?> 
+0

それはどちらもうまくいかないようです。主な問題は、PNGからGIFへの移行です。私はそう思っています.GIFに画像を変更してから、すべてをブラウザに出力する前に透明度を混乱させる方法があれば。 – TheEnigmaMachine

関連する問題