androidのカメラアプリを作成しています。
プレビュー画面をそのままデータとして取得して、それをbmpに変換しさらにjpegに変換しています。
java
1mSupportedPreviewSizes = mCamera.getParameters().getSupportedPreviewSizes();
これで最適な画面サイズを取得しているのですが、freetelのpriori3だと作成されたjpegが以下のようになります。
どうすれば正しいjpgファイルになるでしょうか?
ちなみに以下だと正しいjpegファイルが取得できます。
java
1p.setPreviewSize(640, 480);
変換コードを記載します。
java
1 public static Bitmap getBitmapImageFromYUV(byte[] data, int width, int height, Camera camera) { 2 Bitmap bmp = null; 3 FileOutputStream outStream = null; 4 byte[] byt; 5 YuvImage yuv_image = null; 6 int format = camera.getParameters().getPreviewFormat(); 7 8 if (format == ImageFormat.NV21 || format == ImageFormat.YUY2 || format == ImageFormat.NV16) { 9 // Get the YuV image 10 yuv_image = new YuvImage(data, format, width, height, null); 11 // Convert YuV to Jpeg 12 Rect rect = new Rect(0, 0, width, height); 13 ByteArrayOutputStream output_stream = new ByteArrayOutputStream(); 14 yuv_image.compressToJpeg(rect, 100, output_stream); 15 byt = output_stream.toByteArray(); 16 17 BitmapFactory.Options bitmapFatoryOptions = new BitmapFactory.Options(); 18 bitmapFatoryOptions.inPreferredConfig = Bitmap.Config.RGB_565; 19 bmp = BitmapFactory.decodeByteArray(byt, 0, byt.length, bitmapFatoryOptions); 20 } 21 return bmp; 22 }
あと保存するコードです。
java
1 FileOutputStream out = null; 2 // ファイル保存 3 try { 4 out = new FileOutputStream(imgPath); 5 6 rotated_bmp.compress(Bitmap.CompressFormat.JPEG, 100, out); 7 out.flush(); 8 out.close();
ちなみに変換するのはAsyncTaskのdoInBackgroundで行っています。
回答よろしくお願い致します。
(補足です。他のスマホaquosやgalaxyではgetSupportedPreviewSizes()のプレビューサイズで正しくjpeg画像が取得できます。)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/02 03:34
2017/02/02 03:37
2017/02/02 03:38