android 获取文件的字节数组,Android/Java:将字节数组保存到文件(.jpeg)

我正在开发一个Android应用程序,部分应用程序必须拍照并将它们保存到SD卡.onPictureTaken方法返回一个包含捕获图像数据的字节数组.

我需要做的就是将字节数组保存到.jpeg图像文件中.我试图在BitmapFactory.decodeByteArray(获取Bitmap)和bImage.compress(到OutputStream),普通OutputStream和BufferedOutputStream的帮助下完成此操作.所有这三种方法似乎都给了我同样奇怪的错误.我的Android手机(800万像素摄像头和一个体面的处理器),似乎保存照片(大小看起来正确),但以一种损坏的方式(图像被切片,每个切片被移动;或者我只是得到几乎各种颜色的水平线) ; 奇怪的是,带有500万像素摄像头和快速处理器的Android平板电脑似乎可以正确保存图像.

所以我想也许处理器无法跟上保存大图像,因为我在大约3张图片后得到了OutOfMemory Exceptions(即使压缩质量为40).但那么内置的相机应用程序是如何做到的,而且速度也快得多?我很确定(从调试)OutputStream写入所有数据(字节),它应该没问题,但它仍然被破坏.

***简而言之,将字节数组保存到jpeg文件的最佳/最快方式(可行)是什么?

马克,先谢谢你

我试过的代码(以及其他一些细微的变化):

try {

Bitmap image = BitmapFactory.decodeByteArray(args, 0, args.length);

OutputStream fOut = new FileOutputStream(externalStorageFile);

long time = System.currentTimeMillis();

image.compress(Bitmap.CompressFormat.JPEG,

jpegQuality, fOut);

System.out.println(System.currentTimeMillis() - time);

fOut.flush();

fOut.close();

} catch (Exception e) {

}

try {

externalStorageFile.createNewFile();

FileOutputStream fos = new FileOutputStream(externalStorageFile);

fos.write(args);

fos.flush();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值