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
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.
Dann springt er mir aber bei folgender Methode in OnConfiguredFailed
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
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