我想从PNG文件中提取两个字段。即,几何字段和元数据中的一个字段。
我能做到这一点的最快方法是什么?我已经对我目前执行此操作的脚本进行了基准测试,到目前为止,最慢的操作是在PNG文件上执行实际的ImageMagick“识别”程序。 (.4秒vs .0001秒解析几何的输出数组,8.39E-5秒解析元数据中的关键短语)
提前感谢您的帮助,
乔纳森
答案 0 :(得分:1)
我不熟悉任何现成的库或类,在没有子进程调用的情况下在PHP中执行它,但如果找不到,那么编写自己的库肯定是要走的路。
PNG是一种相当简单的块流格式,因此寻找特定的块并提取一些头字段是微不足道的。
您需要的只是读取和检查8字节89 50 4E 47 0D 0A 1A 0A
PNG标头,然后在读取8个字节(块长度加类型)和使用长度搜索超过块之间交替,直到您点击你想要的块类型。
对于几何体,假设PNG遵循规范,这里是它的方式:
type = IHDR
我可能需要5到15分钟才能在Python中鞭打这样的东西。 (我用RAR和GIF做过类似的事情)因为我在使用低级文件I / O的经验较少,所以在PHP中可能有15到25个。