解决方案 »
- 数组越界问题,各位大神帮忙看看
- android语音识别(无弹出框)
- android4.0中setting模块修改preferencecategory显示的背景宽度
- android终端与PC通信
- SipDemo使用的问题
- android browser里的titlebar的按键事件
- eclipse自动联想功能导致假死
- Android TextView 默认字体颜色
- 显示相册所有照片问题
- org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 文件提前结束
- AIDL进程间传递自定义类型参数
- android切换fragment导航栏出错
bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);
这里试试用Bitmap.Options压缩下
不过,还得觉得,应该是相机拍照的图片太大直接导致.
在得到数据时,就先对图片进行压缩处理,再使用处理后的bitmap.
01-09 16:37:45.415: D/解码(28946): data.length=972705
现在的android手机,高清的照相机,拍出来的照片都几M一张,android的内存,开发人员也不能随便控制.本身这是android的短板.
你再试试设置memoryCacheSize,把它设置大一些,但我觉得,不对图片进行压缩处理,这个问题还是不能解决,更何况,应用中图片显示和操作多的话,就更容易OOM了.
到要用的时候在适当压缩从本地读出来
这样在本地保存的图片就不会被压缩
因为需求必须得先转为bitmap,因为下个界面就是图片预览与编辑
朋友问下这个memoryCacheSize的设置是哪个类里面的方法啊,弄了半天没弄出来
现在的android手机,高清的照相机,拍出来的照片都几M一张,android的内存,开发人员也不能随便控制.本身这是android的短板.
你再试试设置memoryCacheSize,把它设置大一些,但我觉得,不对图片进行压缩处理,这个问题还是不能解决,更何况,应用中图片显示和操作多的话,就更容易OOM了.
朋友问下这个memoryCacheSize的设置是哪个类里面的方法啊,弄了半天没弄出来额,朋友,我的意思是设置内存大小,方法,不记得,你百一下,因为我正在写代码用到imageloader,所以,就写了这几个词.
不过,如果你有大量图片下载或从本地读取,都可以用imageloader,它可以设置memoryCacheSize.
好的谢了,我再看看。实在不行的话,就只有用Bitmap.Options压缩下了
很遗憾经过上午的调试ImageLoader运用后,先成功的展示了手机相册里的图片,但跳往拍照界面后按下快门的瞬间 仍旧抛出了OOM。目前就只有用Bitmap.Options压缩下是试试了
很遗憾经过上午的调试ImageLoader运用后,先成功的展示了手机相册里的图片,但跳往拍照界面后按下快门的瞬间 仍旧抛出了OOM。目前就只有用Bitmap.Options压缩下是试试了那你就只有用这个了.
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Toast.makeText(PhotographActivity.this, "没有SD卡或SD卡不可用!",
Toast.LENGTH_LONG).show();
return;
} else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;// 图片宽高都为原来的2分之一,即图片为原来的4分之一
Log.d("解码", "data.length=" + data.length);
// 解码指定字节数组中的一个不变的位图
ConfirmActivity.bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length, options);
Log.d("解码", "1*******");
Intent starEdit = new Intent(PhotographActivity.this,
ConfirmActivity.class);
startActivity(starEdit);
}
}
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Toast.makeText(PhotographActivity.this, "没有SD卡或SD卡不可用!",
Toast.LENGTH_LONG).show();
return;
} else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;// 图片宽高都为原来的2分之一,即图片为原来的4分之一
Log.d("解码", "data.length=" + data.length);
// 解码指定字节数组中的一个不变的位图
ConfirmActivity.bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length, options);
Log.d("解码", "1*******");
Intent starEdit = new Intent(PhotographActivity.this,
ConfirmActivity.class);
startActivity(starEdit);
}
}
}
现在的手机,拍的照片质量非常高,压缩一点,肉眼看上去不会出现明显的失真的.