2009-05-18 12 views
0

Eh bien, j'utilise le code suivant pour prendre une vieille image dans une vignette 160x120, le problème est que s'il y a débordement, l'arrière-plan est toujours noir. J'ai navigué autour des docs PHP mais aucune de ces fonctions ne semble avoir aucun type de paramètre de couleur. Toute idée ou pointeur serait génial!Pourquoi toutes mes miniatures générées automatiquement avec GD en PHP ont des arrière-plans noirs?

$original = 'original_image.jpg'; 
$thumbnail = 'output_thumbnail.jpg'; 

list($width,$height) = getimagesize($original); 
$width_ratio = 160/$width; 
if ($height * $width_ratio <= 120) 
{ 
    $adjusted_width = 160; 
    $adjusted_height = $height * $width_ratio; 
} 
else 
{ 
    $height_ratio = 120/$height; 
    $adjusted_width = $width * $height_ratio; 
    $adjusted_height = 120; 
} 
$image_p = imagecreatetruecolor(160,120); 
$image = imagecreatefromjpeg($original); 
imagecopyresampled($image_p,$image,ceil((160 - $adjusted_width)/2),ceil((120 - $adjusted_height)/2),0,0,ceil($adjusted_width),ceil($adjusted_height),$width,$height); 
imagejpeg($image_p,$thumbnail,100); 

Aussi, si vous n'êtes pas clair ce que je veux dire, prendre this image et considérer qu'il était à l'origine uniquement du texte rouge sur un fond blanc

Répondre

1

Ajouter cette avant de copier l'original dans la nouvelle:

$white = ImageColorAllocate($image_p, 255, 255, 255); 
ImageFillToBorder($image_p, 0, 0, $white, $white); 

EDIT:

En fait, je ne savais pas à propos de l'imagefill. . .

$white = imagecolorallocate($image_p, 255, 255, 255); 
imagefill($image_p, 0, 0, $white); 
+0

+1 pour un bon post, mais le lama vous a battu au punch pour une réponse acceptée –

0

DonT Je pense que l'utilisation imagecreatetruecolor à la place imagecreate, cela résoudrait