2011-03-15 9 views
1

私は、白い背景とそれに幾らかの透過的な画像を持つimage.pngを持っています。GD2を使ってpngをjpgに変換する。透明性の問題

私がjpgに画像を変換するために、これを試してみました:

$data = file_get_contents('image.png'); 
$resource = imagecreatefromstring($data); 
imagejpeg($resource); //> I TRIED WITH QUALITY = 100 TOO 

問題はPNGが今trasparencyを得たところJPGはかなり巨大な黒帯を持っています。

http://img861.imageshack.us/img861/20/context.jpg

問題を解決する方法を:これがjpgがどのように見えるかありますか?

EDIT1:

$data = file_get_contents('image.png'); 
$resource = imagecreatefromstring($data); 
imagealphablending($data, false); 
imagesavealpha($data, true); 
imagejpeg($resource); 

をしかし、結果は同じだった:

Abiusxによって示唆されるように私もこれを試してみました。パトリックコメントへ

http://www.tipradar.com/wp-content/uploads/2010/02/Quicktime.png

ありがとう::画像を.pngのソースがあることに注意してください、ここでのトリック:GD! Converting a png image to jpeg and making the alpha by default white and not black

+0

私は正確には思い出しませんが、ヘルプはPHP Webサイト(コメントを介して)で提供されていますので、私はそれを探してしばらくここに投稿します。 – AbiusX

+0

ああ、Jpegは透明性をサポートしていません。私はウルのタイトルを読んでいない。 PNGとGIfだけが透明性をサポートします。 – AbiusX

+0

@abiusx:はい私は私のjpgでtrasparecenyを維持したくない、私はちょうどその黒いパッチなしで最終的なJPGを望む –

答えて

-1

これは、それが助けをdoesntの場合、私は、PNGのサイズを変更したが、透明性を維持するために使用する機能です、あなたのための必要な部分を抽出するために教えてください:ここ

function Resize($ImageFile,$OriginalFile) 
{ 
    $ext=basename($OriginalFile); 
    $ext=explode(".",$ext); 
    $ext=array_pop($ext); 
    $ext=strtolower($ext); 
    if ($ext=="jpg" or $ext=="jpeg" or $ext=="jpe") 
     $img=imagecreatefromjpeg($ImageFile); 
    elseif ($ext=="png") 
     $img=imagecreatefrompng($ImageFile); 
    elseif ($ext=="gif") 
     $img=imagecreatefromgif($ImageFile); 
    else 
     return false; 
    list($w,$h)=getimagesize($ImageFile); 
    $dstimg=imagecreatetruecolor(140,100); 

    imagealphablending($dstimg, false); 
    imagecopyresampled($dstimg,$img,0,0,0,0,140,100,$w,$h); 
    imagesavealpha($dstimg, true); 
    imagepng($dstimg,$ImageFile); 
    return true; 
} 
+0

私は別のPNGからのPNGをプリントアウトしたくありません。私はそれに黒いパッチを持たないで.jpgにPNGを変換する必要があります:) – dynamic

+0

主にimagealphablendingとimagecopyresampledとimagesavealpha – AbiusX

+0

4つの最後の機能を確認してくださいOk私はそれらを使用し、結果はまだその黒いパッチがあった。私はした:imagecreatefromstring、imagealphablendin、imagesavealphaとimagejpeg(私はそれを使用していないので、再サンプリングする必要はありません) – dynamic

関連する問題