2011-08-06 7 views
0

私は、写真を撮る前に、AndroidのCameraSurfaceViewを使用してプレビュー画像をユーザーに表示しています。これは画面上で正常に表示されますが、写真を撮ると結果として生じるjpgが壊れています(水平線)。Android搭載カメラのプレビューでG2の画像出力が壊れていますか?

私はMark MurphyのCamera/Picture exampleを使って、G2で同じ問題を示しました。

カメラPARAMATERS:

プレビューサイズ:800×480

画像フォーマット:JPEG

両方のパラメータは、getSupportedPreviewSizes()getSupportedPictureFormats()

ネクサス一項に記載の支持されています画面サイズが同じで、同じパラメータで正しく動作します。

640×480

私の質問にプレビューサイズを設定する際にG2が正常に動作します(サポートされている設定を使用しているにもかかわらず、画像を破損している)の前に誰がこの問題に遭遇していますか?どれくらい頻繁にですか?あなたはどうしたのですか?

+0

私は現在、G2を持っていませんしたがって、この質問に答えることはできません - ごめんなさい! – CommonsWare

+0

@CommonsWareしかし、あなたはこの問題を他のデバイスで見たことがありますか?私はそれが一般的ではないと期待されていると、今後のAndroid 2.3のアップデートはそれを修正します。 – smith324

+0

"しかし、あなたはこの問題を他のデバイスで見たことがありますか?" - いいえ。 – CommonsWare

答えて

0

は、これまでのところ私は同じ問題を持っていたし、今私は

setPictureFormat(ImageFormat.JPEG); 

カメラのパラメータ設定を使用して地雷を修正するために管理します。

ちょうど最近、カメラのデフォルト画像出力がYUVであることがわかりました。これがプレビューで完全に表示される理由ですが、写真が撮られると、緑色やピンク色、または破損した画像出力が得られます。 これは、カメラがサポートしているImageFormat値です。

JPEG = 256; 
NV16 = 16; 
NV21 = 17; 
RAW10 = 37; 
RAW_SENSOR = 32; 
RGB_565 = 4; 
UNKNOWN = 0; 
YUV_420_888 = 35; 
YUY2 = 20; 
YV12 = 842094169; 

サポートされているサイズ以外に、場合によってはPictureFormatもチェックする必要があります。

http://i.stack.imgur.com/PlHFH.png

これらはImageFormat YUVを使用して、したがって、JPEG圧縮として保存撮影しただけのサンプル画像です。

しかし、あなたはImageFormatを変更するので、この回避策で画像を保存する必要があるかもしれませんYUVフォーマットの設定を保持したくない場合は:

Camera.Parameters parameters = camera.getParameters(); 
Camera.Size size = parameters.getPreviewSize(); 
YuvImage image = new YuvImage(data, parameters.getPreviewFormat(), 
        size.width, size.height, null); 
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "YuvImage.jpg"); 
FileOutptStream filecon = new FileOutputStream(file); 
image.compressToJpeg(new Rect(0, 0, image.getWidth(), image.getHeight()), 90, 
        filecon); 
関連する問題