Neden PHP GD ile tüm benim otomatik oluşturulan küçük siyah arka plan var mı?

3 Cevap php

Orada taşma arka her zaman siyah ise Eh ben bir 160x120 minik herhangi bir eski görüntü almak için aşağıdaki kodu kullanıyorum, sorundur. Ben PHP dokümanlar çevresinde gözetleme oldum ama bu fonksiyonların hiçbiri renk parametrelerinin her türlü var gibi. Herhangi bir fikir veya işaretçiler harika olurdu!

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

Eğer belirsiz iseniz de ne demek, this image almak ve aslında beyaz bir arka plan üzerinde sadece kırmızı metin olduğunu düşünün

3 Cevap

imagecreatetruecolor function siyah bir tuval oluşturur.

Beyaz boya imagefill işlevini kullanın ...

Eğer yeni içine orijinal kopyalamak için önce bu ekle:

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

EDIT:

Aslında, ben imagefill bilmiyordum. . .

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

Kullanım imagecreatetruecolor yerine imagecreate yok, bunu çözmek düşünüyorum