我正在尝试使用ImageMagick处理.jpg文件。我相信我已经成功安装了它,因为可以通过以下命令在命令提示符下将.jpg图像转换为.png图像:
convert image.jpg image.png
但是,当我尝试在脚本中加载模块并执行脚本时,出现“无法在@INC中找到imagemagick.pm(您可能需要安装imagemagick模块)”错误。
如何将Image :: Magick模块加载到脚本中?
#!/usr/bin/perl
use Image::Magick; #load the ImageMagick module
use strict;
use warnings;
my $directory = 'path-to-images';
opendir my $dh2, $directory or die "Could not open file";
while (my $image = readdir($dh2)){
my $convertedFileName = $image; #assign current image to a variable
$convertedFileName =~ s/.jpg/-convert.jpg/; #change name of file
print "$convertedFileName\n";
$convertedFileName = Image::Magick->new; #make ImageMagick object
$convertedFileName->Quantize(colorspace=>'gray'); #alter the image
}
closedir $dh2;
答案 0 :(得分:0)
最可能的解释是错误消息告诉您Image::Magick模块只是没有安装在您的系统上。是什么让您认为它已安装?您是否在其他程序中使用过它?其他使用该系统的人会使用它吗?
Image :: Magick模块不是标准Perl安装的一部分。需要单独安装。看起来您正在使用Linux,并且shebang行指向系统Perl,所以最快的方法是安装为您的发行版预先打包的Image :: Magick版本。从您的标准软件包存储库中。
在类似RedHat的系统(RHEL,Centos,Fedora等)上,输入:
sudo yum install ImageMagick-perl
(在较新版本的Fedora中,您可能需要dnf
而不是yum
。)
在类似Debian的系统(Debian,Ubuntu等)上,输入:
sudo apt-get install libimage-magick-perl
您的代码也至少存在一个问题。创建Image :: Magick对象(Image::Magick->new()
之后,对其进行任何操作($convertedFileName->Quantize(colorspace=>'gray')
)之前,您需要将现有文件读入该对象。您的代码应该看起来像这样:
while (my $image = readdir($dh2)){
my $convertedFileName = $image; #assign current image to a variable
$convertedFileName =~ s/.jpg/-convert.jpg/; #change name of file
print "$convertedFileName\n";
# Note: I'm using a new variable here
$image = Image::Magick->new; #make ImageMagick object
$image->Read("$directory/$convertedFileName");
$image->Quantize(colorspace=>'gray'); #alter the image
}