Pourquoi toutes mes vignettes générées automatiquement avec GD en PHP ont un fond noir?
-
22-08-2019 - |
Question
Eh bien, je suis en utilisant le code suivant pour prendre une vieille image dans une miniature 160x120, le problème est de savoir s'il y a dépassement l'arrière-plan est toujours noir. J'ai fouiner la documentation PHP, mais aucun de ces fonctions semblent avoir tout type de paramètres de couleur. Toutes les idées ou des pointeurs serait génial!
$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 cette image et considérer qu'il était à l'origine uniquement du texte rouge sur un fond blanc
La solution
Le fonction imagecreatetruecolor crée une toile noire.
Utilisez la fonction imagefill pour peindre blanc ...
Autres conseils
Ajoutez cette avant de copier l'original dans le nouveau:
$white = ImageColorAllocate($image_p, 255, 255, 255);
ImageFillToBorder($image_p, 0, 0, $white, $white);
EDIT:
En fait, je ne savais pas imagefill. . .
$white = imagecolorallocate($image_p, 255, 255, 255);
imagefill($image_p, 0, 0, $white);
N'utiliser imagecreatetruecolor à la place imagecreate, je pense que cela résoudrait