0

camera.setPreviewCallback で次のコードを実行すると、静的なイメージが得られます。ImageView (iv) を正しく表示するにはどうすればよいですか? ここにさらにコードを投稿する必要がありますか? これはstackoverflowに関する私の最初の投稿であるため、優しくしてください-そして、はい、検索して検索しましたが、何も見つかりませんでした。

YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, 300, 300, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0,0,300,300), 0, out);
byte[] imageBytes = out.toByteArray();
bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
iv.setImageBitmap(bitmap);

そうそう、ViewPort は 300x300 です。

私もこのコードを試しました:

int[] imageBytes = convertYUV420_NV21toRGB8888(data, 300, 300);
bitmap = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
bitmap.setPixels(imageBytes, 0, 300, 0, 0, 300, 300);

これは、stackoverflow の関数の 1 つを使用します。

4

1 に答える 1

2

解決策を見つけました。幅と高さが間違っていました。すべてのサイズを 300x300 に設定しましたが、解像度の問題により必要なサイズにならなかったため、最終的にこのコードが機能しました。

Camera.Parameters parameters = camera.getParameters();

YuvImage im = new YuvImage(data, ImageFormat.NV21, parameters.getPreviewSize().width, parameters.getPreviewSize().height, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
im.compressToJpeg(new Rect(0,0,parameters.getPreviewSize().width, parameters.getPreviewSize().height), 100, out);
byte[] imageBytes = out.toByteArray();
bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, out.size());
iv.setImageBitmap(bitmap);
于 2013-01-14T18:09:48.557 に答える