質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1493閲覧

カメラアプリ priori3で撮ったjpeg画像について

yoshio197

総合スコア38

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2017/02/02 02:30

編集2017/02/02 02:37

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画像が取得できます。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mSupportedPreviewSizesはどのような値が入っていますか?

機種依存の問題はプログラマ側で根本的なもの解決をすることは難しいです。
不正な値の場合はデフォルト値でプログラムを実行するような対処しかできないと思いますよ。

投稿2017/02/02 03:26

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshio197

2017/02/02 03:34

priori3のmSupportedPreviewSizes は (768,480)です。 なるほど、機種依存の問題なんですね。ありがとうございます。
yoshio197

2017/02/02 03:37

ひとつ考えたのですがNDKを使用するとどうなるか試してみたいと思います。
yona

2017/02/02 03:38

ちゃんと値は帰って来ていますね。他にも原因がありそうですが、他の端末ではできているということは機種依存の可能性は高いです。 サポートサイズと実際のサイズがずれていそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問