gpt4 book ai didi

regex - 在没有库的情况下从PNG获取图像宽度和高度

转载 作者:行者123 更新时间:2023-12-02 04:42:30 25 4
gpt4 key购买 nike

基于 PNG(可移植网络图形)文件的规范,非常 first chunk 必须是 IHDR(4 个字节),包含图像的宽度、高度和位深度。所以紧跟在 IHDR 之后的是代表 width 的 4 个字节,然后接下来的 4 个字节代表图像的 height

使用正则表达式 /IHDR(.{4})(.{4})/s 并转换 $1$2 是否安全> 变成宽度高度?如果是这样,我该如何进行这种转换?我应该使用 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));
}

最佳答案

我刚刚查阅了 png 规范; IHDR 前面还有更多内容。所以这应该有效:

open(IN, "<xx.png");
binmode(IN);
read(IN, $header, 24);
if (substr($header, 12, 4) ne "IHDR") {
die "this is not a PNG file";
}
($width, $height)=unpack("NN", substr($header, 16));
print "width: $width height: $height\n";
close IN;

关于regex - 在没有库的情况下从PNG获取图像宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com