Tha*_*ama 6 perl image detection
为了设置一些变量,如果我服务器上的给定文件是图像,我需要信息.我对该文件的位置和名称一无所知.
有没有办法检测文件是否是图像而不查看文件扩展名?
Eri*_*don 11
一种简单的方法是通过PerlMagick CPAN模块将工作委托给ImageMagick .这些Identify和Ping方法是为此目的而设计的.
use strict;
use Image::Magick;
my $im = Image::Magick->new();
my ($width, $height, $size, $format) = $im->Ping('/path/to/my/image.jpg');
Run Code Online (Sandbox Code Playgroud)
执行这个小程序后,$format变量将包含一个字符串,其中包含已识别的图像格式(在此示例中为"JPEG"),或者undef出现错误(不存在的文件,无法识别的格式等).
编辑: ...并完全回答您的问题:如果Ping返回格式字符串,假设给定文件是图像可能是安全的,并且如果它是您决定从ImageMagick的支持列表中列入白名单的子集的一部分格式(也包括非图像格式).
JRFerguson file在附加到该问题的评论中提到了该命令.它附带一个C库对应部分libmagic.Perl绑定称为File :: LibMagic.
use File::LibMagic qw();
my $detect = File::LibMagic->new;
$detect->checktype_filename("first_success.jpg") =~ /^image/
Run Code Online (Sandbox Code Playgroud)
对于图像类型,表达式返回true.
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |