Perl-使用Image :: Magick

时间:2018-11-28 17:16:14

标签: perl cpan

我正在尝试使用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;

1 个答案:

答案 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
}