0

我正在使用 PictureCallback 来捕获图像。它工作正常。但在 HTC Desire S 中,它没有返回正确的数据。它返回一个损坏的图像,如下所示

在此处输入图像描述

这是我使用的代码

    PictureCallback cameraPictureCallbackJpeg = new PictureCallback() {
            @Override
            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.e("error", "onPictureTaken - wrote bytes: " + data.length);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            }
    }

我必须告诉你,我已经使用其他方法将数据转换为位图。提前致谢。我被困在这里。任何帮助将不胜感激。

4

2 回答 2

1

没有人向你保证图片格式在不同的设备上是相同的。您必须注意相机设置。

于 2012-06-14T14:55:47.853 回答
1

这是因为您没有使用受支持的图像尺寸之一。以下是如何获得这些。

Parameters params = camera.getParameters();
List<size> sizes = params.getSupportedPictureSizes();

编辑:这是您设置图片大小的方式:

Camera.Parameters params = camera.getParameters();
params.setPictureSize(int width, int height);
try {
camera.setParameters(params);
} catch (Exception e) {
Log.e(TAG, "set parameters failed");
}
于 2012-06-14T14:59:24.527 回答