有人可以建议我一个可以做最简单操作的库,比如缩放,裁剪,旋转而不将图像完全加载到内存中吗?
情况:我需要从非常大的尺寸缩小图像,但缩小的图像仍然太大而无法在内存中分配(如果我们使用标准的android工具)。由于我只需要上传缩小版本,我想通过本机库扩展它并通过FileInputStream上传。
我尝试过使用ImageMagic并且它完成了这项工作,但性能非常差(也许有办法加快速度?)
答案 0 :(得分:1)
可能想查看OpenCV for Android
答案 1 :(得分: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