0

我正在尝试获取特定文件中图像的分辨率、宽度、高度。

我有以下代码。

#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.

谁能给我解决方案?

4

2 回答 2

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 命令的限制。因此,为避免这种情况,请在代码中直接调用模块(例如:use Module::Name;),而不是使用 qw。

于 2013-11-12T18:49:17.893 回答
2

你需要确保你已经做了两件事:

  • 安装 Image::Info 模块
  • 确保 @INC 包含您安装模块的路径

我看到您使用的是 Windows,这意味着您可能正在使用 Strawberry Perl 或 ActiveState 的 Perl。如果您使用的是 Strawberry Perl,您应该按照http://www.cpan.org/modules/INSTALL.html上的说明取得一些成功——我相信 ActiveState 有自己的内置包管理器 ppm,并获得从你想看这里开始:http ://www.activestate.com/activeperl/ppm-perl-modules

于 2013-05-24T00:41:45.553 回答