rli*_*lib 2 linux perl image file raw-data
从Web上检索后,我在缓冲区中有图像:
my $img = $webapi->get('http://myserver.com/image/123423.jpg');
Run Code Online (Sandbox Code Playgroud)
通话结束后,原始数据在$ img中.我想确保数据代表图像而不是文本,因此我将其保存到磁盘上的文件并运行file命令:
open my $fh, '>', '/tmp/images/rawdata.bin';
print $fh $img;
close $fh;
$res = `file /tmp/images/rawdata.bin`;
if ($res =~ 'GIF|JPEG|PNG') print "Image";
else "Not image";
Run Code Online (Sandbox Code Playgroud)
如何避免将原始数据保存到文件并在内存中完成工作?
Sob*_*que 11
file可以从中读取数据STDIN.所以最简单的方法可能是:
open ( my $file_cmd, '|-', 'file -' ) or die $!;
print {$file_cmd} $img;
print <$file_cmd>;
Run Code Online (Sandbox Code Playgroud)
似乎有一个模块 - File::Type这样做.我的快速测试意味着它并不像file让它变得有用一样聪明.