PHP空白图片设置白色背景异常:生成图片背景为黑色
问题分析与解决方案
嘿,我一眼就发现问题所在啦!你的代码里确实有个小疏漏,导致背景没变成预期的白色~
问题根源
imagefilledrectangle() 函数需要传入矩形的左上角坐标和右下角坐标来指定填充范围。你当前写的:
imagefilledrectangle($img, 0, 0, 0, 0, $bg);
只填充了画布上(0,0)这一个像素点,整个画布还是保持imagecreatetruecolor()创建时的默认黑色,自然看不到白色背景啦。
修正后的代码
把填充矩形的右下角坐标改成画布的实际宽高减1(因为图像坐标从0开始计数,600宽的画布最大X坐标是599,1000高的画布最大Y坐标是999),或者用imagesx()和imagesy()动态获取画布尺寸,这样更灵活:
$img = imagecreatetruecolor(600, 1000); $bg = imagecolorallocate($img, 255, 255, 255); // 填充整个画布区域 imagefilledrectangle($img, 0, 0, imagesx($img)-1, imagesy($img)-1, $bg); imagejpeg($img, "myimg.jpg", 100); // 记得释放图像资源,避免内存浪费 imagedestroy($img);
额外提示
使用完GD库的图像资源后,调用imagedestroy()释放内存是个好习惯,尤其是在循环生成大量图片时,能避免内存溢出问题。
内容的提问来源于stack exchange,提问作者Pankaj
相关产品推荐
相关产品推荐

