Hallo zusammen.
Ich bastle gerade an einer einfachen App, welche nur ein View mit einem Vorschuafenster und den Buttons: "Foto aufnehmen", "Foto uploaden" und Reset hat.
Es funktioniert auch alles soweit. Nur soll die App nicht die volle Sensorauflösung benutzen, da man auf den Fotos nicht jedes Krümmel in 10m Entfernung erkennen soll. Die Datenmenge wird einfach zu groß.
6-7MB sind mir zu viel. Auf einem anderen Gerät entstehen Foto mit max.2MB. Das reicht völlig.
Hier der Code, der durch den Button "Foto aufnehmen" aufgerufen wird.
Ich habe zwei Zeilen markiert, die anscheinend ignoriert werden, da die Fotos eine Auflösung von 3456x4608 haben.
Hat jemand ne Idee, woran es liegt und was geändert werden kann/soll, damit es funktioniert?
Danke
Ich bastle gerade an einer einfachen App, welche nur ein View mit einem Vorschuafenster und den Buttons: "Foto aufnehmen", "Foto uploaden" und Reset hat.
Es funktioniert auch alles soweit. Nur soll die App nicht die volle Sensorauflösung benutzen, da man auf den Fotos nicht jedes Krümmel in 10m Entfernung erkennen soll. Die Datenmenge wird einfach zu groß.
6-7MB sind mir zu viel. Auf einem anderen Gerät entstehen Foto mit max.2MB. Das reicht völlig.
Hier der Code, der durch den Button "Foto aufnehmen" aufgerufen wird.
Java:
private void capturePhoto(String tmpFileName) {
long timestamp = System.currentTimeMillis();
ContentValues contentValues = new ContentValues();
tmpFileName = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/" + tmpFileName +".jpg";
contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, "Archivator");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
contentValues.put(MediaStore.MediaColumns.HEIGHT,2592); //diese Zeile wird ignoriert
contentValues.put(MediaStore.MediaColumns.WIDTH,1944); //diese Zeile wird ignoriert
imgFileName=tmpFileName;
String finalTmpFileName = tmpFileName;
imageCapture.takePicture(new ImageCapture.OutputFileOptions.Builder(getContentResolver(),MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues).build(), getExecutor(),new ImageCapture.OnImageSavedCallback()
{
@Override
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
File imgFile = new File(finalTmpFileName);
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) previewImage;
myImage.setImageBitmap(myBitmap);
}
@Override
public void onError(@NonNull ImageCaptureException exception) {
System.out.println("Zeile: ERR " + exception.getMessage());
Toast.makeText(MainActivity.this, "Fehler: " + exception.getMessage() , Toast.LENGTH_SHORT).show();
}
}
);
}
Ich habe zwei Zeilen markiert, die anscheinend ignoriert werden, da die Fotos eine Auflösung von 3456x4608 haben.
Hat jemand ne Idee, woran es liegt und was geändert werden kann/soll, damit es funktioniert?
Danke