我正在开发一个包括图像处理(灰度,Bw过滤,物体检测,颜色调整,水平调整)的应用程序。
众所周知,新手机需要大尺寸的高质量图像。由于内存限制,很难进行图像处理,并且经常会出现异常。因此,我已经将从Java层获取的图像处理移植到JNI,因为如下:
在图像处理中,此方法不会发生OutOfMemoryException。 但有时当图像具有非常大的尺寸时,活动在图像处理期间自动关闭而没有任何异常,并且它的原因没有在调试时指定。 为什么会这样?我该如何解决这个问题?
对不起我的英语。
答案 0 :(得分:0)
有两件事你可以两个:
首先检查在执行图像处理时是否发生问题,如果是,请尝试从主线程卸载它并在单独的线程中执行(可能是一个异步任务开始)。有关此内容的更多信息,请参阅this
内存不足当尝试将高分辨率图像(位图)设置为ImageView 时,问题很容易发生。如果您这样做,则应在将其设置为ImageView之前降低分辨率。有关详细信息,请参阅此link以及此stackoverflow post。