我读了很多关于inSampleSize OutOfMemory困境的讨论。
不能得到一个好的解决方案,所以我问一个关于它的问题。
我目前正在加载一个位图inSampleSize = 4。
这将给我一个大小为648x388的位图。
原始磁盘大小为2592x1592。我在648x388位图上写文本并将其保存回磁盘。
我写在648x388因为2592x1592给我OutOfMemory。android如何加载/保存原始大小位图没有OutOfMemory
它的工作方式是可以将1-10个648x388位图保存在while
循环中。
我想改变这个循环来保存1-10 2592x1592位图。
我该如何安全地加载2592x1592?
我不在乎分辨率下降60%或更多。
只要位图具有相同的大小2592x1592。
有没有一种方法可能会保持大小,但使位图变薄,
去除颜色没有使质量不好。
我首先想到的是要像这样的东西来获得最大的位图我能得到: 我没有测试过这一点,但得到的感觉这是一个糟糕的方式
boolean work = true;
int insample = 2;
BitmapFactory.Options options = new BitmapFactory.Options();
while(work){
try{
options.inSampleSize = insample;
bitmap = BitmapFactory.decodeFile(filePath,options);
work = false;
}catch(Exception e){
insample++;
}
}
任何帮助将是篦。
谢谢@DArkO的回答。有趣的..如果我不能使用Web服务有一些方法来使位图变薄,但保持相同的大小2592x1592。无论如何,我猜想我必须加载它,并击中OOM。 – Erik 2011-06-16 18:21:57
分辨率实际上是一个位图中有多少像素(一个维度是指单个线宽和多个像素分别存在多少个像素)。所以位图对象保存了它所有的像素。通过缩小尺寸,可以减少像素数量并降低分辨率。这很简单。我曾经使用过图像,没有办法处理没有内存使用的大型图像(认为像photoshop这样的软件,处理器和RAM内存昂贵,想象将这种东西装入16兆内存中,这是不可能的。抱歉) – DArkO 2011-06-16 18:32:54
谢谢你的煽动。 必须找到一些可以访问sdcard上的位图和购买某种分辨率的android库api。这应该不难,我猜 – Erik 2011-06-16 18:38:15