当我尝试用下面代码把一个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);
大小变小了,说明不是追加
但是打开图片是先显示之前的图片,再一格一格消失,显示后来的图片,说明不是覆盖
然后神奇的事情发生了,我把图片删掉,再运行程序,重写成功
我了个去去去
之前是追加+重写,就是说重写追加部分,最初始部分是一只留着的,
删掉在再运行就是直接重写所有内容,,,
我了个去去去去去去
好吧,手机问题,只能归结于这个原因,
所以小品牌的手机千万不要买,想我买这个小可乐,尼玛,真不可乐