Наиболее вероятное объяснение состоит в том, что сообщение об ошибке говорит о том, что модуль Image :: Magick просто не установлен в вашей системе.С чего ты взял, что он установлен?Вы использовали это в других программах?Другие люди, использующие систему, используют ее?
Модуль Image :: Magick не является частью стандартной установки Perl.Это должно быть установлено отдельно.Похоже, вы используете Linux, и ваша строка shebang указывает на то, что похоже на системный Perl, поэтому самым быстрым подходом будет установка версии Image :: Magick, которая была предварительно упакована для вашего дистрибутива и которая будет доступнаиз стандартных репозиториев пакетов.
В системе типа RedHat (RHEL, Centos, Fedora и т. д.) введите:
sudo yum install ImageMagick-perl
(вам может понадобиться dnf
вместо yum
в более новых версиях Fedora.)
В системе, подобной 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
}