【发布时间】:2020-08-19 09:26:29
【问题描述】:
根据 PNG(便携式网络图形)文件的规范,一个非常 first chunk 必须是 IHDR(4 字节),包含图像的宽度、高度和位深度。所以在IHDR 后面是代表width 的4 个字节,然后是代表图像的height 的接下来的4 个字节。
使用正则表达式/IHDR(.{4})(.{4})/s 并将$1 和$2 转换为width 和height 是否安全?如果是这样,我该如何进行这种转换?我应该使用unpack("N", $x) 还是unpack("V", $x) ..?
我当前的代码(不确定它是否适用于大图像):
if ($png =~ m/^\x89PNG\x0D\x0A\x1A\x0A....IHDR(.{4})(.{4})/s) {
($width, $height) = (unpack("N", $1) , unpack("N", $2));
}
【问题讨论】: