Android Camera2 API YUV_420_888 zu JPEG
Ich erhalte Vorschau-Frames mit OnImageAvailableListener:
@Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
try {
image = reader.acquireLatestImage();
Image.Plane[] planes = image.getPlanes();
ByteBuffer buffer = planes[0].getBuffer();
byte[] data = new byte[buffer.capacity()];
buffer.get(data);
//data.length=332803; width=3264; height=2448
Log.e(TAG, "data.length=" + data.length + "; width=" + image.getWidth() + "; height=" + image.getHeight());
//TODO data processing
} catch (Exception e) {
e.printStackTrace();
}
if (image != null) {
image.close();
}
}
Jede Zeitlänge der Daten ist unterschiedlich, aber Bildbreite und -höhe sind gleich.
Hauptproblem:data.length
ist zu klein für eine Auflösung von 3264x2448.
Die Größe des Datenarrays sollte 3264 * 2448 = 7.990.272 und nicht 300.000 - 600.000 betragen.
Was ist falsch
imageReader = ImageReader.newInstance(3264, 2448, ImageFormat.JPEG, 5);