2017-06-11 15 views
0

私は画像ファイルのサイズを縮小するPHPスクリプトを作成しています。しかし、PNG画像をアップロードするときには、結果画像に奇妙な黒いバーが表示されます。PHP GD透過PNGブラックバーの問題

オリジナル画像:ここで

は一例です http://imgur.com/a/Ueboz

た画像:

//function for compressing and storing image 
function compress_image($source_url, $destination_url, $quality) { 
    $info = getimagesize($source_url); 
    if ($info['mime'] == 'image/jpeg') 
    $image = imagecreatefromjpeg($source_url); 
    elseif ($info['mime'] == 'image/gif') 
    $image = imagecreatefromgif($source_url); 
    elseif ($info['mime'] == 'image/png') 
    $image = imagecreatefrompng($source_url); 


    imagejpeg($image, $destination_url, $quality); 

    return; 
} ?> 
:ここ
compress_image($_FILES["pic"]["tmp_name"], $folder_path . "/" . $pic_new_name, 50); 

機能コードです:ここで

http://imgur.com/a/9ZGfmは関数呼び出しです

この問題の解決策または回避策はありますか?

+0

リンクとして画像を投稿しないでください。あなたの投稿を編集してください。 – CodingNinja

答えて

0

ええ、私は約5時間後に8人だけが投稿を閲覧したことに驚いています。とにかく、私はそれを自分で解決しました:D

私はそれが他の人に恩恵を受けることを願っています。

これは正しく&プロセスPNG画像を圧縮し、白い背景でJPEGに変換します、完全な機能である:

//function for compressing and storing image 
function compress_image($source_url, $destination_url, $quality) { 
    $info = getimagesize($source_url); 

$w = $info[0]; 
$h = $info[1]; 

if ($info['mime'] == 'image/jpeg') { 
$image = imagecreatefromjpeg($source_url); 
imagejpeg($image, $destination_url, $quality); 
} 



elseif ($info['mime'] == 'image/gif') { 
$image = imagecreatefromgif($source_url); 
imagejpeg($image, $destination_url, $quality); 
} 

elseif ($info['mime'] == 'image/png') { 
$image = imagecreatefrompng($source_url); 

$image_p = imagecreatetruecolor($w, $h); 
$white = imagecolorallocate($image_p, 0xFF, 0xFF, 0xFF); 
imagealphablending($image_p, false); 
ImageSaveAlpha($image_p, true); 
ImageFill($image_p, 0, 0, $white); 
imagealphablending($image_p, true); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $w, $h, $w, $h); 
imagejpeg($image_p, $destination_url, $quality); 

} 


return; 

結果:http://imgur.com/a/S7htB

関連する問題