Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Ubuntu Perl+ImageMagick


Автор: rniA 16.12.2014, 19:06
Добрый день!
Достался в наследие сайт на perl. Пытаюсь сделать так чтобы все заработало. С трудом установил ImageMagick на Ubuntu. Возможно остались косяки в установке. Это присказка.
Скрипт,  который выдает капчу,  должен создать картинку. В ходе проверок оказалось, что картинка имеет нулевой размер.
Даже небольшая часть скрипта выдает пустую картинку

Код

#!/usr/bin/perl
use Image::Magick;

my $image = new Image::Magick;
$image->Set(size => (150*3).'x'.(50*2));
$opt->{background}='rgba(255, 255, 255, 100)';
$image->ReadImage('xc:'.$opt->{background});
my $filename ='b.png';
open(IMAGE,'>',$filename) or die $!;
$image->Write(file=>\*IMAGE, filename=>$filename);
close(IMAGE);
exit;


Помогите найти ошибку

Автор: ginnie 16.12.2014, 20:50
В коде ошибки нет, проблема с установкой ImageMagick'а, у меня на OS X приведенный фрагмент создает файл b.png размером 274 байт.

Автор: rniA 16.12.2014, 21:00
Цитата(ginnie @ 16.12.2014,  20:50)
В коде ошибки нет, проблема с установкой ImageMagick'а, у меня на OS X приведенный фрагмент создает файл b.png размером 274 байт.

Спасибо большое. Как проверить правильность установки ImageMagick?
При выполнении make check вылезла ошибка
FAIL: tests/wandtest.tap 1

Цитата

lt-wandtest: delegate library support not built-in `/usr/share/fonts/type1/gsfonts/n019003l.pfb' (Freetype) @ warning/annotate.c/RenderFreetype/1533.
lt-wandtest: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
lt-wandtest: delegate library support not built-in `/usr/share/fonts/type1/gsfonts/n019003l.pfb' (Freetype) @ warning/annotate.c/RenderFreetype/1533.
lt-wandtest: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
tests/wandtest.c main 5323 non-conforming drawing primitive definition `text' @ error/draw.c/DrawImage/3182



Как это исправить?

Автор: tzirechnoy 16.12.2014, 21:37
1) УМВР. Создаёт файл, белый, непустой.

2) А как Вы умудрились "с трудом" установить ImageMagick и perlmagick/libimage-magick-perl в Ubuntu?
Это какой-то такой дофига труд сказать sudo apt-get install perlmagick?
Или Вы зачем-то установили его сильно по другому? Зачем?

3) Ну и, по факту, реализацыя работы через perl file (который \*HANDLE, и аттрибут file в WriteImage) в perlmagick -- кривое до ужаса. Я там вижу как минимум один баг (нет PerlIO_exportFILE), кроме того, оно не работает практически ни для чего кроме самых простых случаев. И в старом перле -- судя по всему, вообще не работает.
В общем, не используйте его. Просто filename в Вашэм случае будет надёжнее.

Автор: rniA 16.12.2014, 21:54
Устанавливал через компиляцию исходников.
Цитата

./configure --with-quantum-depth=16 --with-perl
make
make install

Что сейчас делать? 

Автор: tzirechnoy 16.12.2014, 22:34
Постарайтесь сделать make uninstall в том жэ дереве исходников.

Добавлено через 1 минуту и 12 секунд
И, кстати, во всех остальных исходниках, которые Вы так поставили в систему -- тожэ.


Впрочем, вероятно, чем старых отмыть лучшэ новых нарожать -- в смысле, поставить систему заново, с mkfs.

Автор: rniA 17.12.2014, 06:02
Цитата

make uninstall 
apt-get install libperl-dev perlmagick

Результата не принес.

На девственно чистой машине
Цитата

$ sudo apt-get update
$ sudo apt-get install build-essential checkinstall libx11-dev libxext-dev zlib1g-dev libpng12-dev libjpeg-dev libfreetype6-dev libxml2-dev
$sudo apt-get install libperl-dev perlmagick 


Скрипт выполнен!!!Файл создан!!! Всем спасибо!!! буду дальше копать smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)