2009-05-18 2 views
0

Ну, я использую следующий код, чтобы взять любое старое изображение в миниатюре 160x120, проблема в том, что переполнение фона всегда черное. Я следил за документами PHP, но ни одна из этих функций не имеет каких-либо цветовых параметров. Любые идеи или указатели были бы замечательными!Почему все мои автогенерируемые миниатюры с GD на PHP имеют черный фон?

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

Кроме того, если вы не ясно, что я имею в виду, возьмите this image и считают, что это было первоначально только красный текст на белом фоне

ответ

2

imagecreatetruecolor function создает черный холст.

Используйте функцию imagefill покрасить его в белый ...

+0

сладкого спасибо за совет! –

1

Добавить это, прежде чем копировать оригинал в новый:

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

EDIT:

На самом деле, я не знаю, примерно изображениеfill. , ,

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

+1 за хороший пост, но лама избил тебя до удара за принятый ответ –

0

не использовать imagecreatetruecolor вместо ImageCreate, я думаю, что бы решить