我正在尝试获取特定文件中图像的分辨率,宽度和高度。
我有以下代码。
#use strict;
use Image::Info qw(image_info dim);
use File::List;
#perl2exe_include Image::Info::JPEG;
#perl2exe_include PerlIO;
my $file = <ImageFilePath>;
my $info = image_info($file);
my $res = $info->{resolution};
print "$$res[0]\n";
我有Perl版本5.16.3
我收到以下错误:
Can't locate Image/Info.pm in @INC (@INC contains: c:\program files\Perl\lib c:/program files/Perl/site/lib c:/program files/Perl/lib .) at Img_Res.pl line 3.
BEGIN failed--compilation aborted at Img_Res.pl line 3.
任何人都可以给我解决方案吗?
答案 0 :(得分:3)
从问题的代码部分我得出结论,你正在尝试使用Perl2EXE创建一个可执行文件,因为你正在使用该行
#perl2exe_include Image::Info::JPEG;
并假设您正在运行命令
perl2exe c:\somepath\somescript.pl -o somescript.exe
@James Green的答案在某种程度上是正确的,但是它不完整(因为未能解释他的第二个要点)。
您需要安装“Image :: Info”以及您正在使用的任何其他模块(使用@James Green的答案)。
安装完成后,打开Windows资源管理器并找到刚刚安装的模块, 它通常位于以下文件夹中
"PERL_PATH\perl\lib"
"PERL_PATH\perl\site\lib"
"PERL_PATH\perl\vendor\lib"
找到模块后,将安装在上述3个位置之一。导航到安装Perl2EXE的位置。
PERL2EXE_PATH\perl2exe-XX.xx-Win\
使用您正在使用的当前版本的perl找到该文件夹。在您的情况下,文件夹名称应为
Win32-5.16.3 or Win64-5.16.3
打开文件夹并找到.conf文件。 使用标题libdir编辑该行。
libdir=perl-Win32/site/lib;perl-Win32/lib;perl-Win32/vendor/lib;.
确保所有perl / lib目录都包含在搜索路径中。 保存并重新运行命令。这应该有用。
有时甚至在所有这些之后perl2exe命令失败,这是由于程序能够解密qw命令的限制。 所以为了避免这种情况,请直接在代码中调用模块(例如:使用Module :: Name;)而不是使用qw。
答案 1 :(得分:2)
你需要确保你做了两件事:
我看到你在Windows上,这意味着你可能使用Strawberry Perl或ActiveState的Perl。如果您正在使用Strawberry Perl,您应该按照http://www.cpan.org/modules/INSTALL.html上的说明取得一些成功 - 我相信ActiveState有自己的内置包管理器,ppm,并且要开始使用它,你会想看看这里:http://www.activestate.com/activeperl/ppm-perl-modules