android:如何改进图像处理的内存管理

标签 android image-processing

我正在尝试旋转相机图像。代码如下所示:

Bitmap result = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getWidth(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.save();
canvas.rotate(90);
canvas.translate(0, -1*bitmap.getHeight());
canvas.drawBitmap(bitmap, new Matrix(), null);
canvas.restore();
String path = String.format(dir+"pic_%d.jpg", System.currentTimeMillis());
stream = new FileOutputStream(path);
bitmap.compress(CompressFormat.JPEG, this.imageQuality, stream);
stream.flush();
stream.close();

问题是:我收到 OutOfMemoryException(第一行)。有没有办法通过额外的线程或其他解决方案来完成这项工作?缩小图像目前不是一种选择。

最佳答案

如果您的图像中不需要 alpha channel ,您可以使用 RGB_565 而不是 ARGB_8888。这将为您每个像素节省 2 个字节。

关于android:如何改进图像处理的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452723/

相关文章:

python - 用 U2Net 去除背景太强了

python 设置将 (pdf) 转换为 jpeg 时的最大文件大小,例如棍棒

php - 当我的应用程序关闭时,GCM 消息不会出现在我的应用程序中

android - 在没有设置弹出窗口的情况下使用 Android 进行打印

image-processing - 胡七不变矩在物体识别中的意义

python - 图像数据处理后超出0-1范围

android - VFY : unable to resolve [lots of stuff]

android - 如何使用 Paging Library 正确实现 kotlin 协程?

android, libgdx 修复了动态面板顶部的导航栏

image-processing - 每像素阈值