PHP GD生成的图像图像无法显示,因为它包含Firefox中的错误



当使用PHP生成图像时,例如使用下面的代码或使用JPEG而不是PNG添加水印到服务器存储的图片,图像可能根本不会生成,并且会引发错误,直接在Firefox上可见,但不会在Chrome上。

尽管在某些服务器上工作,但这种代码现在可能在另外一些服务器上工作,有时候出于难以理解的原因。在我的情况下,它在本地运行得非常好,但在互联网服务器上出现错误,图像无法显示,因为它包含错误。

这个问题可能有几个原因,其中一些是:

输出之前已经设置好了。

来自图像生成的真正错误。

使用错误的图像类型。

图像库未安装。

输出之前已经设置好了

即使不是故意的,也可能是这样的情况,例如,其他先前的脚本最后包含空格 - 为了避免此错误,请确保按照PHP建议,不要使用PHP结束标记关闭脚本?>

然后,在使用头函数之前,请使用以下代码来确保先前设置的头文件被丢弃

还有这个功能可以确保在标题和图像之前没有输出

这解决了我的问题,并且图像再次正确显示。

来自图像生成的真正错误

如果在图像生成过程中出现真正的错误,请确保PHP设置为显示所有可能的错误类型,并检查相应的日志,以便能够追踪并解决它。

以下代码将使PHP报告日志中的所有错误:

由于服务器配置的原因,您可能会发现报告了一些错误,即使它们没有出现在输出html中。

使用错误的图像类型

确保您使用的图像类型是正确的,例如使用此代码来区分png和jpeg。

根据使用的图像生成功能,还要根据使用的输出确保标题是正确的

图像库未安装

学习SEO基础知识:今天注册!

通过我们易于遵循的基础课程掌握SEO的基础知识,可以提高网站的知名度和流量。

开始学习SEO

通过我们易于遵循的基础课程掌握SEO的基础知识,可以提高网站的知名度和流量。

确保图像库已安装。为此,运行函数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
关于作者 - Yoann Bierling
Yoann Bierling是一家网络出版和数字咨询专业人员,通过技术专业知识和创新产生了全球影响。热衷于赋予个人和组织在数字时代蓬勃发展,他被迫取得出色的成果,并通过创建教育内容来推动成长。

学习SEO基础知识:今天注册!

通过我们易于遵循的基础课程掌握SEO的基础知识,可以提高网站的知名度和流量。

开始学习SEO

通过我们易于遵循的基础课程掌握SEO的基础知识,可以提高网站的知名度和流量。




评论 (6)

 2018-08-19 -  Irvin Vasquez
Simple, clear and well explained, many thanks
 2018-08-19 -  Joyce Lawrence
ありがとう、非常に有益な
 2018-08-19 -  Catherine Roberts
Dokładnie tego, czego szukałem, idealnie
 2018-08-19 -  Headlinext
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
 2018-08-19 -  Marshel
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
 2018-08-19 -  porcateraC
بالضبط ما كنت أبحث عنه ، مثالي

发表评论