我正在编写一个脚本来调整gif图像的大小。我注意到我创建的图像具有较小的图像尺寸,但在磁盘上占用更多空间。我想我已经找到了问题的原因。在photoshop中检查时的原始图像在其颜色表中只有4种颜色(白色,灰色,灰色,黑色),而新图像在其颜色表中有256种颜色。我找不到从传入图像复制颜色表的方法,有没有办法控制它?这是我的剧本
use Image::Magick;
my $image = Image::Magick->new;
$image -> Read( 'test.gif' );
$image -> Resize(geometry=>"50%");
$image->Write( 'test-out.gif' );
任何建议都非常感谢。
答案 0 :(得分:2)
您可以使用Sample()代替Resize()来保持相同数量的颜色
$image->Sample(geometry=>"50%");
答案 1 :(得分:0)
您可以使用-colors
选项限制输出颜色的数量。包含+dither
选项是个好主意,即使您确定输入和输出中的颜色数量相同。在直接的ImageMagick中,它看起来像这样:
convert test.gif +dither -colors 4 test-out.gif
我不知道perlMagick API的语法,但这应该让你非常接近。