OnPreviewFrame Daten Bild Bildansicht

ich versuche, das byte[] von der Vorschau der Kamera umwandeln und in bitmap-und zeigen Sie es auf eine Bildansicht mit Bildansicht.setImageBitmap()

ich habe es geschafft, starten Sie die Vorschau und zeigt Sie auf einer surfaceView, aber ich weiß nicht, wie zu konvertieren byte[] data (kommt im Yuv-format, glaube ich) in eine RGB-bitmap, um anzeigen auf einer Bildansicht.

den code, den ich versuche, ist Folgendes:

camera = camera.open();
parameters = camera.getParameters();
camera.setParameters(parameters);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera.setPreviewDisplay(surfaceHolder);
camera.setPreviewCallback(this);
camera.startPreview();

und der Vorschau, Rückruf ist diese

@Override
public void onPreviewFrame(byte[] data, Camera camera) {

    Camera.Parameters parameters = camera.getParameters();
    int width = parameters.getPreviewSize().width;
    int height = parameters.getPreviewSize().height;
    ByteArrayOutputStream outstr = new ByteArrayOutputStream();
    Rect rect = new Rect(0, 0, width, height); 
    YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
    yuvimage.compressToJpeg(rect, 100, outstr);
    Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
    imgView1.setImageBitmap(bmp);        
}

Die Vorschau funktioniert, aber der Bildansicht bleibt leer

Irgendeine Idee?

hier legen Sie die Bildansicht.setImageBitmap(bmp); ?
Nach Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
stellen Sie sicher, outstr.size()!=0!!?
Sorry für die späte Antwort... aber, wie soll ich das überprüfen?
sehen outstr.Länge() oder eine andere Funktion, die für den check-Größe in der ByteArrayOutputStream-Klasse in doc

InformationsquelleAutor Pitr | 2013-11-30

Schreibe einen Kommentar