上传某些.png文件时出错"Interlace handling should be turned on when using png_read_image"



我在处理已上传到我的网站的图像时看到了一些随机错误,其中某些.png文件会导致错误到输出缓冲区,这将搞砸回到服务器。

错误是:

使用png_read_image&quot&quot&quot&quot"

在某些情况下,我已经看到了这一点,在某些情况下,我正在手动处理上传的文件,现在我也开始在WordPress安装上看到它。我没有将这个问题标记为WordPress,因为我怀疑它与WordPress有任何关系,而是PHP中的某个问题。

我最初在PHP 5中看到了这个问题,但是自从我升级到PHP 7以来,我也看到了它。我现在正在运行PHP 7.1.9。

谷歌搜索到目前为止尚未返回任何有意义的结果,似乎没有任何特定的PHP答案Web服务器的角度是因为我无法控制用户上传的内容。上传后,这些图像似乎仍然可以正常工作,我只需要一种抑制此消息的方法,以免向用户显示错误的错误。

错误消息确实使用png_read_image()提到,但是我并未在任何地方直接调用此功能。也许它在内部将其称为某个地方,但这很难调试。最好的我可以认为它与imagepng()imagecreatefrompng()有关。

目前,我正在前端围绕它进行工作,在试图解析响应之前,我正在脱下错误文本。

我很抱歉,如果这有点缺乏细节,但我真的不知道现在还能提供什么。

我有此消息(php 7.2.3 gd):

libpng warning: Interlace handling should be turned on when using png_read_image

和其他一些

libpng warning: tRNS: invalid with alpha channel
libpng warning: iCCP: known incorrect sRGB profile

我的代码正在与一个图像中的不同来源(然后是不同的质量)合并PNG图像,在使用Photoshop处理某些图片后,消息消失了,但是似乎有解决方法,请参见下面的说明:

<?php
// Create an image instance
$im = imagecreatefromgif('php.gif');
// Enable interlancing
imageinterlace($im, true);
// Save the interlaced image
imagegif($im, './php_interlaced.gif');
imagedestroy($im);
?>

https://www.php.net/manual/en/function.imageinterlace.php

imageInterlace()打开或关闭插座位。

为了澄清什么是交叉点:

ImageInterLace()函数是PHP中的内置函数,用于在图像中启用或禁用Interlace。交错(也称为交织)是一种编码位图图像的方法,使得部分收到它的人会看到整个图像的降级副本。网站上隔行式图像和非相互交错的图像之间的一个区别是,前者首先将其加载到低质量版本中,然后随着网站的加载,它的质量不断提高,而非静置图像则通过固定质量线加载。网站加载时从上到下的线。

最新更新