Я пытаюсь использовать новую api-камеру. Улавливание пакетов происходило слишком медленно, поэтому я использую формат YUV_420_888 в ImageReader и делаю JPEG, который позже будет показан, как было предложено в следующем сообщении:
Вспышка захвата камеры Android2 слишком медленная
Проблема в том, что я получаю зеленые изображения при попытке кодирования JPEG из YUV_420_888 с использованием RenderScript следующим образом:
RenderScript rs = RenderScript.create(mContext);
ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic = ScriptIntrinsicYuvToRGB.create(rs, Element.RGBA_8888(rs));
Type.Builder yuvType = new Type.Builder(rs, Element.YUV(rs)).setX(width).setY(height).setYuvFormat(ImageFormat.YUV_420_888);
Allocation in = Allocation.createTyped(rs, yuvType.create(), Allocation.USAGE_SCRIPT);
Type.Builder rgbaType = new Type.Builder(rs, Element.RGBA_8888(rs)).setX(width).setY(height);
Allocation out = Allocation.createTyped(rs, rgbaType.create(), Allocation.USAGE_SCRIPT);
in.copyFrom(data);
yuvToRgbIntrinsic.setInput(in);
yuvToRgbIntrinsic.forEach(out);
Bitmap bmpout = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
out.copyTo(bmpout);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmpout.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] jpegBytes = baos.toByteArray();
переменная данных (данные YUV_420_888) получается из:
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
Что я делаю неправильно в кодировке JPEG, чтобы получить изображения только зеленым?
Заранее спасибо
Отредактировано: Это пример изображений зеленого цвета, которые я получаю:
https://drive.google.com/file/d/0B1yCC7QDeEjdaXF2dVp6NWV6eWs/view?usp=sharing