为什么我用PHP中的GD自动生成的缩略图都有黑色背景?

为什么我用PHP中的GD自动生成的缩略图都有黑色背景?,php,gd,thumbnails,Php,Gd,Thumbnails,我使用下面的代码将任何旧图像转换成160x120的缩略图,问题是如果有溢出,背景总是黑色的。我一直在窥探PHP文档,但这些函数似乎都没有任何颜色参数。任何想法或建议都会很棒 $original = 'original_image.jpg'; $thumbnail = 'output_thumbnail.jpg'; list($width,$height) = getimagesize($original); $width_ratio = 160 / $width; if ($height *

我使用下面的代码将任何旧图像转换成160x120的缩略图,问题是如果有溢出,背景总是黑色的。我一直在窥探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);
$original='original_image.jpg';
$thumbnail='output_thumbnail.jpg';
列表($width,$height)=getimagesize($original);
$width_比率=160/$width;
如果($height*$width_ratio,则创建黑色画布

使用imagefill函数将其绘制为白色…

将创建黑色画布


使用imagefill功能将其绘制为白色…

在将原始图像复制到新图像之前添加以下内容:

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

事实上,我不知道imagefill

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

在将原始文件复制到新文件之前添加以下内容:

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

事实上,我不知道imagefill

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

不要用ImageCreateTureColor代替imagecreate,我认为这会解决问题,不要用ImageCreateTureColor代替imagecreate,我认为这会解决好好帖子的问题,但是llama在接受答案+1上击败了你,而llama在接受答案上击败了你