2012-11-23 68 views
3

有人可以建议我一个库,可以做到最简单的操作,如缩放,裁剪,旋转而不需要将图像加载到内存中吗?更快的图像处理

情况:我需要从非常大的尺寸缩小图像,但缩小的图像仍然太大,无法在内存中分配(如果我们使用标准的安卓工具)。由于我只需要上传缩小版本,我想通过本地库扩展它并通过FileInputStream上传。

我试着使用ImageMagic和它的工作,但性能很差(也许有办法加快速度?)

+0

一个很好的例子,你尝试过什么样的“机器人工具”? – WarrenFaith

+0

你看过OpenCV吗?我知道Android有一个端口。也许值得。 – dougcunha

+0

通过android工具我的意思是加载与BitmapFactory解码+ inSampleSize缩小图像 –

回答

0

你可以通过将图像拉入内存来使用原始的Android位图功能,但允许Android在加载之前对图像进行采样。

例如:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 2; 
Bitmap myBitmap = BitmapFactory.decodeStream(inputstream,null,options); 

这将载入您的位图到内存与整个图像的内存占用量的一半。您可以尝试更改inSampleSize以更好地适合您的应用程序。

如果您知道最终的图像大小,您也可以即时计算样本大小,您可以在将图像加载到内存中之前获取图像的当前文件大小,并使用方程inSampleSize = OriginalSize/RequiredSize。虽然样本量是2的幂次时最好使用,所以您可以对此进行调整。

编辑: 这里https://stackoverflow.com/a/823966/637545