小编Mar*_*ark的帖子

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) {
    }
Run Code Online (Sandbox Code Playgroud)

    try {
        externalStorageFile.createNewFile();
        FileOutputStream fos = new FileOutputStream(externalStorageFile);
        fos.write(args);
        fos.flush();
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

android jpeg bytearray android-camera

27
推荐指数
1
解决办法
5万
查看次数

压缩/压缩android上的文件夹

我需要压缩一个"项目"文件夹,以允许用户通过电子邮件分享项目.我找到了一个用于将多个文件压缩成一个zip的类,但是我需要将文件夹结构保存在我的zip中.有没有办法在Android上实现这一点?提前致谢.

compression directory zip android

21
推荐指数
4
解决办法
3万
查看次数

标签 统计

android ×2

android-camera ×1

bytearray ×1

compression ×1

directory ×1

jpeg ×1

zip ×1