Android / Java:将字节数组保存到文件(.jpeg)

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

我需要做的是将字节数组保存到.jpeg映像文件中。我尝试通过BitmapFactory.decodeByteArray(获取Bitmap),然后bImage.compress(一个OutputStream),一个纯OutputStream和一个BufferedOutputStream的帮助。所有这三种方法似乎都给我同样的奇怪的bug。我的Android手机(8MP相机和一个体面的处理器),似乎保存照片(尺寸看起来正确),但是以破坏的方式(图像被切片,每个切片被移动;或者我只是几乎水平线各种颜色) ;而奇怪的是,拥有5MP相机和快速处理器的Android平板电脑似乎正确地保存了图像。

所以我想也许处理器不能跟上节省大图像,因为我有大约3张照片后的OutOfMemory异常(即使在40的压缩质量)。但是,内置的Camera应用程序如何做到这一点呢?我很确定(从调试),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();
    }

All I need to do is save the byte array into a .jpeg image file.

只需将其写入文件即可。它已经是JPEG格式。 Here is a sample application demonstrating this.这是代码的关键部分:

class SavePhotoTask extends AsyncTask<byte[], String, String> {
    @Override
    protected String doInBackground(byte[]... jpeg) {
      File photo=new File(Environment.getExternalStorageDirectory(), "photo.jpg");

      if (photo.exists()) {
            photo.delete();
      }

      try {
        FileOutputStream fos=new FileOutputStream(photo.getPath());

        fos.write(jpeg[0]);
        fos.close();
      }
      catch (java.io.IOException e) {
        Log.e("PictureDemo", "Exception in photoCallback", e);
      }

      return(null);
    }
}
http://stackoverflow.com/questions/7978905/android-java-saving-a-byte-array-to-a-file-jpeg

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Android / Java:将字节数组保存到文件(.jpeg)