在SmallTalk(Pharo)中调整图像文件(JPEG)的大小



我试图用pharo在硬盘驱动器上调整图像文件的大小。这是我目前这样做的方式:

img := ImageReadWriter formFromFileNamed: 'picture.jpg'.
scaledimage := img scaledIntoFormOfSize: 100.
scaledimage writeJPEGfileNamed: 'scaledPicture.jpg'.

这是这样做的好方法吗?还有一个方法可以指定此图像的JPEG压缩质量?

谢谢!

henne

好吧,我找到了这样做的方法,并想分享我的解决方案。这是代码:

img := ImageReadWriter formFromFileNamed: 'pic.jpg'.
scaledimage := img magnifyBy: 0.8.
PluginBasedJPEGReadWriter
  putForm: scaledimage
  quality: 95
  progressiveJPEG: false
  onFileNamed: 'scaledPicture95.jpg'.
scaledimage writeJPEGfileNamed: 'scaledPictureDfl.jpg'.

这样,您可以按一个因素扩展图像,在这种情况下为0.8。大于1的因素也有效。此外,您可以指定JPEG质量。在此示例中,我选择了95。Flag Progressive JPEG可以创建一个图像,该图像在加载时以浏览器的预览质量显示,并且会出现更好的数据传输。不过,所有浏览器都不支持!最后一行是可选的,只是用默认设置保存了第二个JPEG作为比较。我希望这可以帮助某些人在将来寻找这个。

henne

我不知道PluginBasedJPEGReadWriter

有smagick。它需要ImageMagick和Osprocess才能使其起作用。

如果您需要一个完整的图像操纵库。

最新更新