2014-01-15 5 views
1

Я пишу сценарий для изменения размеров изображений gif. Я заметил, что созданные мной изображения имеют меньший размер изображения, но занимают больше места на диске. Я думаю, что я отследил причину проблемы. Исходные изображения при просмотре в фотошопе имеют только 4 цвета в их цветовой таблице (белый, серый, серый, черный), а новые изображения имеют 256 цветов в их таблице цветов. Я не могу найти способ скопировать таблицу цветов из входящего изображения, есть ли способ контролировать это? Вот мой сценарийPerl Magick Resize Color Issue

use Image::Magick; 
my $image = Image::Magick->new; 
$image -> Read('test.gif'); 
$image -> Resize(geometry=>"50%"); 
$image->Write('test-out.gif'); 

Любой совет, который очень ценится.

ответ

2

Вы можете использовать образец() вместо Resize(), чтобы сохранить такое же количество цветов

$image->Sample(geometry=>"50%"); 
+0

Это уже сделано. Большое спасибо. – user3198443

+0

Если этот ответ решил вашу проблему, пожалуйста, примите его, щелкнув галочку слева. См. [Ask], если вам нужна помощь. – simbabque

0

Вы можете ограничить количество выходных цветов, используя опцию -colors. Рекомендуется включить опцию +dither, даже если вы уверены, что у вас одинаковое количество цветов как на входе, так и на выходе. В прямом ImageMagick, это будет выглядеть следующим образом:

convert test.gif +dither -colors 4 test-out.gif 

Я не знаю синтаксис API perlMagick, но вы должны получить довольно близко.

+0

Спасибо за ответ. Я использовал решение, выше которого работает отлично. – user3198443