3

有人可以建议我一个库,它可以在不将图像完全加载到内存中的情况下进行缩放、裁剪、旋转等最简单的操作吗?

情况:我需要从一个非常大的尺寸缩小图像,但缩小的图像仍然太大而无法在内存中分配(如果我们使用标准的android工具)。由于只需要上传缩小版,所以想到了通过原生库进行缩放,通过FileInputStream上传。

我尝试使用 ImageMagic 并且它可以完成工作,但是性能很差(也许有一种方法可以加快速度?)

4

2 回答 2

1

可能想查看适用于 Android 的 OpenCV

于 2012-11-23T16:36:36.437 回答
0

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

例如:

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

这会将您的位图加载到内存中,内存占用是完整图像的一半。您可以尝试更改inSampleSize以使其更适合您的应用程序。

您还可以即时计算样本大小,如果您知道目标的最终图像大小,则可以在将图像加载到内存之前获取图像的当前文件大小,并使用等式inSampleSize = OriginalSize计算样本大小/必需尺寸。虽然样本大小最好在它是 2 的幂时使用,因此您可以对此进行调整。

编辑:这里有一个很好的例子https://stackoverflow.com/a/823966/637545

于 2012-11-23T17:07:16.703 回答