Perl Image :: Magick转换格式

时间:2013-08-12 23:08:06

标签: perl imagemagick

几个月前我在我的perl服务器上安装了Image::Magick,但现在我有意想不到的行为..

经过数小时的研究,我遇到了一些问题......

我要做的是将图像从.png转换为.jpg。

这里没有问题..问题来了。基本上我转换后的文件“.jpg”在转换后总是比.png大..

这是我的代码片段:

my $image = Image::Magick->new;

my  $x = $image->Read($serverPathDir.'/'.$serverFileName);  # an .png file 

    $x = $image->Set( Gravity => 'Center' );
    $x = $image->Resize(geometry=>'435x210'); 
    $x = $image->Set(Quality=>'80%');
    $x = $image->Write($serverPathDir.'/'.'.jpg');

经过一些研究和理论,我意识到这个问题可能存在于特定的图像中...当我用其他图像测试时,结果更令人满意,但没有像GIMP(png到jpg)......我不知道压缩器Image::Magick使用什么,但似乎与其他压缩器非常不同..即:GIMP

2 个答案:

答案 0 :(得分:1)

转换为jpg并更改原件的尺寸时,请使用8的倍数。因此,请将调整大小更改为'436x216'的几何图形,看看是否有帮助。

有关详情,请参阅here

答案 1 :(得分:0)

问题可能与已经压缩的PNG文件有关。

转换为其他格式时,必须解压缩图像。然后你用另一种格式压缩它,这可能无法像原始格式那样压缩它 此外,使用仅包含实际使用颜色的调色板,可以压缩颜色较少的PNG。

因此,如果您的样本量足够大,实际上很可能找到JPEG版本较大的文件。

您可以在Wikipedia上了解更多相关信息。

除非您绝对需要使用JPEG格式,否则我只会将大于某个任意大小的文件转换为JPEG(较大的文件更可能是照片。) (例如,无法读取PNG文件的程序)