2016-01-01 2 views
0

Я старался получить YuvImage в png imageformat на устройстве Android 5.0.1, где png появился как зеленые изображения. На Android 5.1.1 этого не произошло, и изображения показывались просто отлично. По прошествии некоторого времени я узнал, что в Android 5.0.1 есть ошибка, из-за которой преобразованные изображения выглядят зелеными. Это было исправлено в Android 5.1.1.Преобразование YUV imageformat в PNG

Однако кто-нибудь знает о решении, чтобы эта работа работала на устройствах, которые не получили это исправление?

+0

Вы используете API 2 камеры или старый? – silvaren

+0

@silvaren Я использую Camera 2 API – Araw

ответ

1

Я не думаю, что есть способ обход ошибки, поскольку по моему опыту изображения уже генерируются системой, и это не проблема преобразования в PNG.

Я вижу, что вы используете API-интерфейс Camera 2 из своего комментария, и поскольку вы используете формат YUV, я считаю, что вы пытаетесь сохранить изображения из непрерывной ленты с камеры (в отличие от съемки с полным разрешением) , Если это так, я предлагаю использовать более старый API-интерфейс камеры, если это вообще возможно, поскольку я не видел устройство, которое не работает при захвате изображений предварительного просмотра в формате YUV (NV21), которые легко могут быть преобразованы в PNG , хотя, чтобы пройти через шаг JPEG:

YuvImage yuvImage = new YuvImage(nv21bytearray, ImageFormat.NV21, width, height, null); 
ByteArrayOutputStream os = new ByteArrayOutputStream(); 
yuvImage.compressToJpeg(new Rect(0, 0, width, height), 100, os); 
byte[] jpegByteArray = os.toByteArray(); 
Bitmap bitmap = BitmapFactory.decodeByteArray(jpegByteArray, 0, jpegByteArray.length); 
FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/imagename.png"); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
fos.close(); 

с nv21bytearray будучи байтовый массив NV21 возвращаемый старой камеры API onPreviewFrame(...) метода.

+0

Добавлен устаревший API-интерфейс камеры. Таким образом, только устройства, использующие 5.1.1 и выше, будут использовать API Camera2. – Araw

Смежные вопросы