几个月前我在我的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
答案 0 :(得分:1)
转换为jpg并更改原件的尺寸时,请使用8的倍数。因此,请将调整大小更改为'436x216'的几何图形,看看是否有帮助。
有关详情,请参阅here
答案 1 :(得分:0)
问题可能与已经压缩的PNG文件有关。
转换为其他格式时,必须解压缩图像。然后你用另一种格式压缩它,这可能无法像原始格式那样压缩它 此外,使用仅包含实际使用颜色的调色板,可以压缩颜色较少的PNG。
因此,如果您的样本量足够大,实际上很可能找到JPEG版本较大的文件。
您可以在Wikipedia上了解更多相关信息。
除非您绝对需要使用JPEG格式,否则我只会将大于某个任意大小的文件转换为JPEG(较大的文件更可能是照片。) (例如,无法读取PNG文件的程序)