为什么我用PHP中的GD自动生成的缩略图都有黑色背景?
我使用下面的代码将任何旧图像转换成160x120的缩略图,问题是如果有溢出,背景总是黑色的。我一直在窥探PHP文档,但这些函数似乎都没有任何颜色参数。任何想法或建议都会很棒为什么我用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 *
$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在接受答案上击败了你