2017-06-11 4 views
0

Je travaille sur un script PHP qui réduit la taille du fichier image et fonctionne parfaitement avec les images JPEG. Cependant, lors du téléchargement d'une image PNG, des barres noires étranges apparaissent dans l'image résultante.PHP GD Transparent PNG barres noires numéro

Voici un exemple:

Image originale: http://imgur.com/a/Ueboz

l'image Entraîné: http://imgur.com/a/9ZGfm

est ici l'appel de fonction:

compress_image($_FILES["pic"]["tmp_name"], $folder_path . "/" . $pic_new_name, 50); 

est ici le code de fonction:

//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; 
} ?> 

Y a-t-il une solution ou une solution de contournement pour ce problème?

+0

S'il vous plaît ne pas poster des images sous forme de liens. S'il vous plaît modifier votre message. – CodingNinja

Répondre

0

Hmmm, je suis surpris que seulement 8 personnes ont regardé le post après presque 5 heures. Quoi qu'il en soit, je l'ai résolu moi-même: D

J'espère que cela va bénéficier à d'autres.

Ceci est la fonction complète qui comprimera correctement et de les convertir & processus images PNG au format JPEG avec fond blanc:

//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; 

Résultat: http://imgur.com/a/S7htB