Apple PNG图像解压缩

时间:2014-12-27 17:44:51

标签: php

我遇到了Apple不幸决定创建一个实际上不是PNG文件格式的PNG文件格式的问题。我从应用程序IPA文件中提取了一个PNG图像文件,并尝试在Web浏览器上显示它,发现Web浏览器不知道如何显示它们并给出错误。我花了一些时间才发现原始的,解压缩的图像首先是问题所在。

在研究了这个问题并做了大量工作之后,我终于找到了这个脚本,因为我没有创建类来做我需要的知识:

https://gist.github.com/juban/8397183

作者说这是一个PHP脚本版本,它将苹果PNG文件转换为标准的PNG文件,以便它可以正常显示。有关更多信息,我正在运行PHP 5.5 +。

我提取图像文件的过程如下:

if ($zip->open($ipaFile) === TRUE) {
   if($zip->locateName($iconFilePath.$iconFile) !== FALSE) {

      if ($iconData = $zip->getFromName($iconFilePath.$iconFile)) {

      $iOSNormalizer = new iOSPNGNormalizer();

      $iconData = $iOSNormalizer->getNormalizedPNG($iconData);

      file_put_contents($iconSaveFile.$newIconFile, $iconData);


      }
     }
    }

iOSNormalizer是一个可以通过点击我给出的链接查看的课程。

当我在课程中运行时,我会挂起以下错误:

Warning: zlib_decode(): data error in mypage.php on line 524

Notice: Uninitialized string offset: 12840 in mypage.php on line 532

Notice: Uninitialized string offset: 12840 in mypage.php on line 532

......对于很多不同的行,这最后两个通知重复了很多次。发生的事情是苹果PNG文件的原始宽度和高度已恢复,遇到zlib_decode()错误,然后停止工作。输出的文件是具有原始高度和宽度的空白白色图像。 zlib_decode()没有很好地记录PHP,我不知道如何解决这个问题。我希望有人可以查看链接中的课程,并更好地理解为什么会发生这种情况。谢谢!

编辑:为了确保它与我从IPA文件中提取图标文件没有任何关系,我在我的问题末尾附带的图像上测试了以下代码,我仍然有相同的问题(再次,请参阅我的链接中的PHP类以查看函数getNormalizedPNG()的作用):

$iconFile = "/path/AppIcon40x40@2x.png";
$newIconFile = "/path/converted.png";

$iOSNormalizer = new iOSPNGNormalizer();

$iconData = $iOSNormalizer->getNormalizedPNG($iconFile);

file_put_contents($newIconFile, $iconData);

Example PNG

0 个答案:

没有答案