Imagereader nicht als RGBA_8888 konfigurierbar

  • 0 Antworten
  • Letztes Antwortdatum
R

Raggygandalf

Ambitioniertes Mitglied
0
Hallo liebe Community,

ich hoffe ich habe die Suche richtig benutzt. Aber leider nichts gefunden bisher.

Ich möchte in meiner eigenen KameraAPP ein Bild mit der Camera2 API als Bitmap zwischenspeichern, da ich an diesem bestimmte verarbeitungen durchführen möchte. (Benötige dazu getPixel()).

Nun ist es so, das ich JPEGs abspeichern kann, wenn Imagereader folgendermaßen konfiguriert ist

Code:
imageReader = ImageReader.newInstance(largest.getWidth(),largest.getHeight(), ImageFormat.JPEG,1);


Wenn ich dann den davon erhaltenen Buffer in eine Bitmap schreiben möchte. Ist der Buffer dieses Jpeg (da compressed) ja zu klein.

Nun wollte ich den Imagereader folgendermaßen konfigurieren.

Code:
imageReader = ImageReader.newInstance(largest.getWidth(),largest.getHeight(), PixelFormat.RGBA_8888,1);

Dann springt er mir aber bei folgender Methode in OnConfiguredFailed

Code:
 private void createCaptureSession() {
        List<Surface> outputs = new ArrayList<>();
        Surface surface = imageReader.getSurface();
        outputs.add(surface);
        try {
            final CaptureRequest.Builder builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
            builder.addTarget(surface);
            //builder.set(CaptureRequest.CONTROL_AF_MODE,CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
            //int rotation = getWindowManager().getDefaultDisplay().getRotation();
            //builder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
            camera.createCaptureSession(outputs, new CameraCaptureSession.StateCallback() {
                @Override
                public void onConfigured(CameraCaptureSession session) {
                    try {
                        session.capture(builder.build(), new CameraCaptureSession.CaptureCallback() {

                            @Override
                            public void onCaptureCompleted(CameraCaptureSession session,
                                                           CaptureRequest request,
                                                           TotalCaptureResult result) {
                                createPreviewCaptureSession();
                            }

                            @Override
                            public void onCaptureFailed(CameraCaptureSession session,
                                                        CaptureRequest request,
                                                        CaptureFailure failure) {
                                createPreviewCaptureSession();
                            }
                        }, null);
                        camPreview.this.activeSession = session;
                    } catch (CameraAccessException e) {
                        Log.e(TAG, "capture()", e);
                    }
                }

                @Override
                public void onConfigureFailed(CameraCaptureSession session) {
                    Log.e(TAG, "onConfigureFailed()");
                }
            }, null);
        } catch (CameraAccessException e) {
            Log.e(TAG, "createCaptureSession()", e);
        }
    }


Meine Vermutung ist, das ich von der Camera direkt keine anderen Formate als JPEG auslesen kann. (Jetzt mit dem Patch evtl. RAW ?)

Allerdings weiß ich nicht weiter, wie ich an die Bilddaten rankomme um diese auszulesen und zu manipulieren. (Außer Bild noch einmal aus dem gespeicherten Pfad laden.

Wäre super wenn mir da jemand helfen könnte.

mfg
 
Zurück
Oben Unten