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

サポートされている画像サイズのいずれかを使用していないためです。これらを入手する方法は次のとおりです。

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 に答える
1

画像フォーマットが異なるデバイスで同じになるとは誰も約束しませんでした。カメラの設定には注意が必要です。

于 2012-06-14T14:55:47.853 に答える