Android: как сохранить рамку предварительного просмотра как изображение в формате jpeg? - PullRequest
7 голосов
/ 23 июня 2009

Я хотел бы сохранить рамку предварительного просмотра как изображение в формате JPEG.

Я попытался написать следующий код:

public void onPreviewFrame(byte[] _data, Camera _camera)
{
    if(settings.isRecording())
    {
        Camera.Parameters params = _camera.getParameters();
        params.setPictureFormat(PixelFormat.JPEG);
        _camera.setParameters(params);
        String path = "ImageDir" + frameCount;
        fileRW.setPath(path);
        fileRW.WriteToFile(_data);
        frameCount++;
    }
}

но невозможно открыть сохраненный файл как изображение в формате JPEG. Кто-нибудь знает, как сохранить предварительный просмотр кадров в формате JPEG?

Спасибо

Ответы [ 6 ]

6 голосов
/ 16 декабря 2011

оформить заказ этот код. я надеюсь, что это поможет

camera.setPreviewCallback(new PreviewCallback() {
                    @Override
                    public void onPreviewFrame(byte[] data, Camera camera) {
                        // TODO Auto-generated method stub
                        Camera.Parameters parameters = camera.getParameters();
                        Size size = parameters.getPreviewSize();
                        YuvImage image = new YuvImage(data, ImageFormat.NV21,
                                size.width, size.height, null);
                        Rect rectangle = new Rect();
                        rectangle.bottom = size.height;
                        rectangle.top = 0;
                        rectangle.left = 0;
                        rectangle.right = size.width;
                        ByteArrayOutputStream out2 = new ByteArrayOutputStream();
                        image.compressToJpeg(rectangle, 100, out2);
                        DataInputStream in = new DataInputStream();
                        in.write(out2.toByteArray());

                        }
                    }

                });
                camera.startPreview();
1 голос
/ 14 сентября 2010

Вы должны конвертировать его вручную, в списке android-разработчиков есть несколько примеров, если вы просматриваете архив - в основном это касается преобразования формата (яркость / цветность и т. Д.), Затем запись изображения в растровое изображение, затем сохранение в файл.

На самом деле все это немного болезненно.

0 голосов
/ 08 февраля 2016

JPEG не является форматом предварительного просмотра камеры. Как гласит официальная документация ,

"Пока поддерживаются только ImageFormat.NV21 и ImageFormat.YUY2"

Чтобы получить изображение из предварительного просмотра камеры, необходимо определить формат предварительного просмотра, как показано ниже:

Camera.Parameters parameters;
parameters.setPreviewFormat(ImageFormat.NV21); //or ImageFormat.YU2

После этого вы сжимаете и сохраняете JPEG, как в примере с Дани.

0 голосов
/ 13 июля 2011

Сначала необходимо проверить, какие форматы предварительного просмотра поддерживаются для вашего устройства, вызвав getSupportedPreviewFormats () . Убедитесь, что JPEG поддерживается, прежде чем вызывать setPreviewFormat (PixelFormat.JPEG) .

0 голосов
/ 16 сентября 2009

Я установил PreviewFormat с Camera.Parameters.setPreviewFormat (PixelFormat.JPEG) перед предварительным просмотром, но кажется, что он не может установить предварительный формат ...... Кстати, формат предварительного просмотра по умолчанию - YCbCr_420_SP ....

0 голосов
/ 24 июня 2009

_data, вероятно, не в формате JPEG. Вы звонили Camera.Parameters.setPreviewFormat(PixelFormat.JPEG) перед тем, как начать предварительный просмотр?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...