Created
September 8, 2020 06:32
-
-
Save Ahwar/b6797f81671b2f8fb3f7cc5de3c9a5dc to your computer and use it in GitHub Desktop.
This Java code converts android's ImageProxy to Bitmap.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private Bitmap toBitmap(Image image) { | |
Image.Plane[] planes = image.getPlanes(); | |
ByteBuffer yBuffer = planes[0].getBuffer(); | |
ByteBuffer uBuffer = planes[1].getBuffer(); | |
ByteBuffer vBuffer = planes[2].getBuffer(); | |
int ySize = yBuffer.remaining(); | |
int uSize = uBuffer.remaining(); | |
int vSize = vBuffer.remaining(); | |
byte[] nv21 = new byte[ySize + uSize + vSize]; | |
//U and V are swapped | |
yBuffer.get(nv21, 0, ySize); | |
vBuffer.get(nv21, ySize, vSize); | |
uBuffer.get(nv21, ySize + vSize, uSize); | |
YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, image.getWidth(), image.getHeight(), null); | |
ByteArrayOutputStream out = new ByteArrayOutputStream(); | |
yuvImage.compressToJpeg(new Rect(0, 0, yuvImage.getWidth(), yuvImage.getHeight()), 75, out); | |
byte[] imageBytes = out.toByteArray(); | |
return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I am having the same problem. I created a plugin to Process Frames. In Android 12 I get distorted image, exact the same above.