2

処理のために、カメラの画像を yuv(NV21) 形式 (SD カードまたはバッファー) で直接保存する方法を知りたいです。jpeg形式で保存することはできますが、NV21に変換すると遅くなると思います。私のアプリケーションでは、撮影した写真をユーザーに見せる必要はありません。これは、写真をjpegとして保存する部分です。明らかに、ここで何かが欠けています。

    ShutterCallback shutterCallback = new ShutterCallback() {
        public void onShutter() {
            Log.d(TAG, "onShutter'd");
        }
    };

    /** Handles data for raw picture */
    PictureCallback rawCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            Log.d(TAG, "onPictureTaken - raw");
        }
    };

    /** Handles data for jpeg picture */
    PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            FileOutputStream outStream = null;
            try {

                //create the directory 
                String state = Environment.getExternalStorageDirectory().getPath()+"/CamOverlay";

                File folder = new File(state);
                boolean success = true;
                if (!folder.exists()) {
                    success = folder.mkdirs();
                }
                if(!success)
                    Log.d(TAG,"directory creation failed");


                // Or write to sdcard
                String name=String.format("/%d.", System.currentTimeMillis());
                outStream = new FileOutputStream(state+name+"jpg");

                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");

            safeToTakePicture=true;
            preview.camera.startPreview();
        }
    };

}

そしてこちらがカメラ設定。

myParameters.setPictureFormat(ImageFormat.YV12);

これを以下に設定してもうまくいきませんでした

myParameters.setPictureFormat(ImageFormat.NV21);

私はアンドロイドが初めてです。このコードは、インターネット上のいくつかの例を使用して作成されています。間違いがありましたらご指摘ください。よろしくお願いします。

4

0 に答える 0