2012-11-03 83 views
2

我正尝试用pharo调整硬盘驱动器上的图像文件大小。这是我目前的做法:在Smalltalk(Pharo)中调整图像文件大小(JPEG)

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

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

谢谢!

Henne

+0

在Form类中似乎还有一个magnify:by:方法。我不明白的是为什么这个方法将矩形作为参数之一。但也许这也是一种可能性!? –

回答

2

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

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。标志逐行JPEG可以创建一个图像,在加载时显示在浏览器中的预览质量,并获得更好的数据传输。尽管这不是所有浏览器都支持的!最后一行是可选的,只是将第二个JPEG与默认设置保存在一起作为比较。我希望这可以帮助一些人在未来寻找这个。

1

我不知道PluginBasedJPEGReadWriter

Smagick。它需要ImageMagick和OSProcess才能使其工作。

如果您需要一个完整的图像处理库,它可能很有用。

相关问题