您的位置:首页 > 移动开发 > Android开发

android bitmap篇--奇怪的问题,不知原因

2015-04-04 11:47 113 查看
当我尝试用下面代码把一个bitmpa写入文件的时候,发生了一件事情

public void onPictureTaken(byte[] data, Camera camera) {
// 根据拍照所得到的数据创建位图
Bitmap bm = BitmapFactory.decodeByteArray(data, 0,
data.length);
//缩放图片到100*100大小
//			bm = BitmapUtil.scaleBitmap(bm, ConstantValue.ConstantInt.PICTURE_WIDTH, ConstantValue.ConstantInt.PICTURE_HEIGHT);
//			long time = System.currentTimeMillis();
String fileName;
try {
//				String fileName = Environment.getExternalStorageDirectory()+ "/meCamera/test.jpg";
fileName = FileUtil.getAbsPhoneFileName("3", 2);
File file1 = new File(fileName);
FileOutputStream outStream = null;
// 打开指定文件对应的输入流
outStream = new FileOutputStream(file1);
// 把位图输出到指定文件中
boolean isSuccess = bm.compress(CompressFormat.PNG, 100,
outStream);
Log.i("xxx", "isSuccess = " + isSuccess);
if (isSuccess) {

Toast.makeText(getActivity(), "保存成功", Toast.LENGTH_SHORT)
.show();
} else {
Toast.makeText(getActivity(), "保存失败", Toast.LENGTH_SHORT)
.show();
}
outStream.close();
//发送消息,图片已经处理完毕
Message msg = Message.obtain();
msg.what = 0;
msg.obj = fileName;
handler.sendMessage(msg);
EventBus.postEvent(ConstantValue.ConstantString.EVENTBUS_MESSAGE_PREDICT, fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(getActivity(), "保存失败,请检查SDCard",
Toast.LENGTH_SHORT).show();
Log.i("xxx", "IOException = " + e);
}
// 重新浏览
camera.stopPreview();
camera.startPreview();
isPreview = true;
}


被写入的文件越来越大,打开一看,发现,图片还是原来的图片。唯一的解释就是在追加,而不是重写

我改了这一句,结果奇葩了

outStream = new FileOutputStream(file1,false);


大小变小了,说明不是追加

但是打开图片是先显示之前的图片,再一格一格消失,显示后来的图片,说明不是覆盖

然后神奇的事情发生了,我把图片删掉,再运行程序,重写成功

我了个去去去

之前是追加+重写,就是说重写追加部分,最初始部分是一只留着的,

删掉在再运行就是直接重写所有内容,,,

我了个去去去去去去

好吧,手机问题,只能归结于这个原因,

所以小品牌的手机千万不要买,想我买这个小可乐,尼玛,真不可乐
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐