Android: Como salvar um quadro de pré-visualização de imagem JPEG como?

votos
6

Gostaria de salvar um quadro pré-visualização como uma imagem jpeg.

Eu tentei escrever o seguinte código:

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++;
    }
}

mas não é possível abrir um arquivo salvo como uma imagem jpeg. Alguém sabe como salvar enquadramentos como imagens JPEG?

obrigado

Publicado 23/06/2009 em 13:31
fonte usuário
Em outras línguas...                            


6 respostas

votos
5

check-out este código. Espero que ajude

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();
Respondeu 16/12/2011 em 14:14
fonte usuário

votos
1

Você tem que convertê-lo manualmente, há alguns exemplos na lista android-desenvolvedores se você procurar o arquivo - principalmente lidar com o formato (luminância / crominância, etc) conversão, em seguida, escrever a imagem para um bitmap, em seguida, salvando em um arquivo .

É tudo um pouco de dor realmente.

Respondeu 14/09/2010 em 11:59
fonte usuário

votos
0

JPEG não é um formato de câmera de visualização. Como documentação oficial diz:

"Só ImageFormat.NV21 e ImageFormat.YUY2 são suportados por agora"

A fim de obter uma imagem da câmera de visualização, você precisa definir o formato de visualização, como abaixo:

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

Depois disso, você comprimir e economize JPEG como no exemplo de Dany.

Respondeu 07/02/2016 em 21:29
fonte usuário

votos
0

Você deve primeiro verificar quais são os formatos de visualização suportados para o seu dispositivo chamando getSupportedPreviewFormats () . Certifique-se de JPEG é suportado antes de chamar setPreviewFormat (PixelFormat.JPEG) .

Respondeu 13/07/2011 em 09:44
fonte usuário

votos
0

Eu defini o PreviewFormat com Camera.Parameters.setPreviewFormat (PixelFormat.JPEG) antes de pré-visualização, mas parece que ele não pode realmente definir o previewformat ...... A propósito, o formato padrão da visualização é YCbCr_420_SP .. ..

Respondeu 16/09/2009 em 09:57
fonte usuário

votos
-1

_data provavelmente não está no formato JPEG. Você ligou Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)antes de chamar visualização início?

Respondeu 24/06/2009 em 19:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more