PHP GD生成的图像图像无法显示,因为它包含Firefox中的错误
当使用PHP生成图像时,例如使用下面的代码或使用JPEG而不是PNG添加水印到服务器存储的图片,图像可能根本不会生成,并且会引发错误,直接在Firefox上可见,但不会在Chrome上。
尽管在某些服务器上工作,但这种代码现在可能在另外一些服务器上工作,有时候出于难以理解的原因。在我的情况下,它在本地运行得非常好,但在互联网服务器上出现错误,图像无法显示,因为它包含错误。
这个问题可能有几个原因,其中一些是:
输出之前已经设置好了。
来自图像生成的真正错误。
使用错误的图像类型。
图像库未安装。
输出之前已经设置好了
即使不是故意的,也可能是这样的情况,例如,其他先前的脚本最后包含空格 - 为了避免此错误,请确保按照PHP建议,不要使用PHP结束标记关闭脚本?>
然后,在使用头函数之前,请使用以下代码来确保先前设置的头文件被丢弃
还有这个功能可以确保在标题和图像之前没有输出
这解决了我的问题,并且图像再次正确显示。
来自图像生成的真正错误
如果在图像生成过程中出现真正的错误,请确保PHP设置为显示所有可能的错误类型,并检查相应的日志,以便能够追踪并解决它。
以下代码将使PHP报告日志中的所有错误:
由于服务器配置的原因,您可能会发现报告了一些错误,即使它们没有出现在输出html中。
使用错误的图像类型
确保您使用的图像类型是正确的,例如使用此代码来区分png和jpeg。
根据使用的图像生成功能,还要根据使用的输出确保标题是正确的
图像库未安装
确保图像库已安装。为此,运行函数phpinfo();在一个脚本中,并检查输出中与PHP GD相关的以下值,这是由imagepng()等函数使用的图形库;
在缺少软件包的情况下,解决这个问题的方式取决于您的本地配置,可以通过使用PEAR命令添加软件包,也可以使用内置的解决方案中的Web主机进行软件包安装。
当imagejpeg或imagepng不工作时该怎么办
在NotePad ++中,打开调用imagepng函数的PHP文件,并在转到菜单编码>转换为UTF-8而不使用BOM后保存。
在DreamWeaver中,转到页面属性>标题/编码>取消选中包括Unicode签名(BOM)。
当PHP imagejpeg或imagepng不起作用时,很可能是因为PHP文件已经使用BOM,物料清单编码,因此在图像数据之前与图像一起发送额外信息。
PHP imagejpeg和PHP imagepng函数用于直接在服务器响应中发送图片代码。
PHP - imagepng无法正常工作PHP - imagepng函数
PHP - imagejpeg函数
常见问题
- 为什么我不能在浏览器中显示使用PHP GD创建的图像?
- 如果您的php GD生成的图像未显示并在浏览器中显示错误,则可能是由于几个原因,例如以前已经发送的输出,图像生成期间的真实错误,使用错误的图像类型或GD Image库正在安装。确保未发送先前的输出,检查是否有真正的错误,验证图像类型和标头,并确认GD库的安装。
- 开发人员如何解决由于错误而未在Firefox中显示的PHP GD生成的图像的问题?
- 开发人员应检查图像生成代码是否有错误,请确保在任何图像数据之前发送正确的内容类型标头,并验证未输出PHP错误或警告。输出图像之前,请使用ob_clean()也可能有所帮助。
Yoann Bierling是一家网络出版和数字咨询专业人员,通过技术专业知识和创新产生了全球影响。热衷于赋予个人和组织在数字时代蓬勃发展,他被迫取得出色的成果,并通过创建教育内容来推动成长。