PHP 增加图像的块数据大小

PHP increase chunk data size for an image

我有一个 PNG 图像存储在一个变量中。该文件没有损坏,但很大(26.7mb / 2908x3444 像素)。我想加载图像并且已经在许多其他图像上使用了 imagecreatefromstring。但是在这张图片上它失败了 "zTXt: chunk data is too large"。我认为可能是imagecreatefromstring引起的,所以我安装了Imageick并尝试了readImageBlob,但我得到了同样的错误。

如何加载具有 bis 文件大小的图像?

测试脚本:

<?php

$picture = file_get_contents('https://live.staticflickr.com/65535/49177974597_69c2581172_o_d.png');
$image=imagecreatefromstring($picture);

header('Content-type:image/png');
header("Content-Disposition: inline; filename=picture.png");
echo imagepng($image);

?>

编辑:Álvaro González 回答正确,图像已损坏。我从来没有预料到图像已损坏,因为它显示在大多数图像查看器(包括 Windows 图片查看器)中。 Gimp 是分析哪些图片损坏了哪些没有损坏的正确工具。

在我的具体案例中,这个在我的 PHP 脚本中下载的 .png 图像是由我之前的脚本生成的。

此脚本已下载原始图像(这是一个 .tiff 文件),删除了 alpha 并将其转换为 png。

我的错误是,我用 Imagick 做了以下事情: 1.下载文件 2.删除阿尔法 3.展平 4.删除阿尔法 5.转换为png 6.保存

现在我执行以下操作: 1.下载文件 2.转换为png 3.删除阿尔法 4.保存

图像现在在所有图像查看器(包括 Gimp 和 Windows 图片查看器)中都可见,并且当我想在 PHP 中输出它时正确显示。

"zTXt: chunk data is too large"表示文件已损坏。确认您可以使用例如打开它GIMP:

来自主要供应商(例如 Chrome 或 Firefox)的工具往往更有弹性,通常可以恢复损坏的数据并正常显示,但较小的开源工具(例如 GIMP 或 PHP) 只是冲突。