Warum alle meine automatisch generierten Thumbnails mit GD in PHP schwarzen Hintergrund haben?

StackOverflow https://stackoverflow.com/questions/879669

  •  22-08-2019
  •  | 
  •  

Frage

Nun, ich den folgenden Code verwenden in einen 160x120 Thumbnail irgendein altes Bild zu nehmen, ist das Problem, wenn es Überlauf ist der Hintergrund ist immer schwarz. Ich habe rund um die PHP-Dokumentation wurde Snooping aber keine dieser Funktionen scheint jede Art von Farbparameter zu haben. Irgendwelche Ideen oder Zeiger wären toll!

$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);

Auch wenn Sie nicht klar, was ich meine, nehmen dieses Bild und bedenken, dass es ursprünglich nur rot Text auf weißen Hintergrund war

War es hilfreich?

Lösung

Die imagecreatetruecolor Funktion eine schwarze Leinwand erzeugt.

Mit der imagefill Funktion malen es weiß ...

Andere Tipps

Fügen Sie diese, bevor Sie das Original in die neue kopieren:

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

EDIT:

Tatsächlich, ich wusste nicht, über imagefill. . .

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

nicht verwenden, anstatt imagecreatetruecolor Imagecreate, denke ich, dass lösen würde

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top