2

所以我正在阅读许多关于如何获得图像预览然后保存的教程。通常的教程涉及使用SurfaceHolderandSurfaceViewPictureCallback.

正如文档中显示的那样,这是

public abstract void onPictureTaken (byte[] data, Camera camera)

通常要保存图像,您可以执行以下操作

/** Handles data for jpeg picture */
PictureCallback jpegCallback = new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        FileOutputStream outStream = null;
        try {
            // write to local sandbox file system
            // outStream =
            // CameraDemo.this.openFileOutput(String.format("%d.jpg",
            // System.currentTimeMillis()), 0);
            // Or write to sdcard
            outStream = new FileOutputStream(String.format(
                    "/sdcard/%d.jpg", System.currentTimeMillis()));
            outStream.write(data);
            outStream.close();
            Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
        Log.d(TAG, "onPictureTaken - jpeg");
    }
};

但我对保存 jpeg 不感兴趣。我想保存一个 tiff 图像。阅读文档我发现了一个关于data格式的非常普遍的评论:

拍照后图像数据可用时调用。数据的格式取决于回调的上下文和 Camera.Parameters 设置。

所以我点击了Camera.Parameters但我没有发现任何有用的东西。

有没有办法将字节保存为 tiff?难道我做错了什么?

4

1 回答 1

4

不,不直接支持 TIFF。保存 TIFF 文件的最兼容选项是使用BitmapFactory解码从 takePicture 接收到的 JPEG ,然后使用 TIFF 库将位图作为 TIFF 文件保存到磁盘。

Android 的 API 不直接支持 TIFF,因此您必须找到第 3 方库。

您可能需要考虑改用 PNG,因为 API 直接支持它;你可以直接调用Bitmap.compress

于 2012-11-01T16:44:22.787 回答