请问怎样用Perl获取远程图片的信息呢?
请问怎样用Perl获取远程图片的信息呢?
[解决办法]
下载下来再处理不就好了么,要看图片的具体格式的
[解决办法]
要在 Perl 中获取图象文件的尺寸需要以二进制方式打开文件,然后读取尺寸数据并转换为整数;文件大小可以使用 Perl 标准功能完成。下面的代码只需调用 PictureSize 并使用文件路径参数就可以以数组的方式返回图象的宽度、高度和文件大小(注意: 这段程序只支持 JPG 和 GIF 文件):
---------------------------------
sub PictureSize {
my $gw = 0;
my $gh = 0;
my $gs = 0;
my $sl;
my $filepath = $_[0];
$gs = &FileSize($filepath);
if ($filepath eq '') {
return (0, 0, $gs);
}
open(FH, $filepath) || return (0, 0, $gs);
binmode FH;
read(FH, $buff, 3);
if ($buff eq 'GIF') { # Gif
read(FH, $buff, 3);
read(FH, $buff, 2);
$gw = &Str2Int($buff, 1);
read(FH, $buff, 2);
$gh = &Str2Int($buff, 1);
} elsif ($buff eq "\xff\xd8\xff") { # Jpg
read(FH, $buff, 1);
read(FH, $buff, 2);
$sl = &Str2Int($buff, 0);
read(FH, $buff, $sl);
read(FH, $buff, 2);
$sl = &Str2Int($buff, 0);
read(FH, $buff, $sl);
read(FH, $buff, 3);
read(FH, $buff, 2);
$gh = &Str2Int($buff, 0);
read(FH, $buff, 2);
$gw = &Str2Int($buff, 0);
}
close(FH);
return ($gw, $gh, $gs);
}
sub Str2Int {
my $str = $_[0];
my $mode = $_[1];
my $intnum;
if ($mode == 0) {
$intnum = ord(substr($str, 0, 1)) * 256 + ord(substr($str, 1, 1));
} else {
$intnum = ord(substr($str, 1, 1)) * 256 + ord(substr($str, 0, 1));
}
return $intnum;
}
sub FileSize {
return (-s $_[0]);
}
---------------------------------
饔梅绞轿:
($picwidth, $picheight, $picsize) = &PictureSize($Pathname);
饫锏 $Pathname 是文件路径。
---------------------------------
[解决办法]
你试试这个模块Image::Size
my ($width, $height, $format) = ImageSize($filePath);