- Forum-Beiträge: 36
02.11.2020, 21:22:19 via Website
02.11.2020 21:22:19 via Website
Hallo zusammen,
ich schreibe eine App, die Qr-Codes erzeugt und auf dem Display anzeigt, sowie auch den zugehörigen Web-Service, der die Daten dazu verwaltet. Anzeigen eines Qr-Codes auf einem Handy und diesen mit einem anderen Handy einscannen, funktioniert schon.
Jetzt ist der Wunsch, einen erzeugten Qr-Code auch per Mail schicken zu können. Ich müsste also den Qr-Code, der als Bitmap in der App vorhanden ist, als shared File (JPG oder PNG) speichern, dann kann der User seine Mail-App öffnen und eine Mail mit dieser Datei als Attachment schreiben. Ich habe verschiedene Versuche geschrieben:
FileOutputStream fOut = new FileOutputStream(saveFile);
qrcodeBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
... oder CompressFormat.PNG oder anderer Quality-Wert ...
oder:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
qrcodeBitmap.compress(Bitmap.CompressFormat.JPG, 85, bos);
byte[] bitmapdata = bos.toByteArray();
fos.write(bitmapdata);
Das Ergebnis ist immer, daß eine Datei geschrieben wird, und da ist bei Bitmap.CompressFormat.JPG auch ein Qr-Code-Bild drin; bei PNG ist es nur komplett schwarz oder weiß, je nach Hintergrundfarbe des Layouts, in dem das Bild eingebettet ist.
Bei JPG gelingt es allerdings der serverseitigen Qr-Code-Methode nicht, Qr-Code zu erkennen. Ich habe im Web-Portal eine Upload-Methode, die eine JPG- oder PNG-Datei auf den Server hochlädt; dieser analysiert mit Google Zxing das Bild und ermittelt den enthaltenen Inhalt. Das klappt mit einer PNG-Datei, die ich auf andere Weise erstellt habe, aber trotz etlicher Versuche nicht bei JPG.
Wie kriege ich es hin, die Bitmap in eine lesbare PNG-Datei zu schreiben? Oder wenn ihr eine Idee habt, wie ich Zxing überrede, eine Qr-Code-Datei im JPG-Format zu akzeptieren, wäre das natürlich auch willkommen.
Im voraus vielen Dank
Gerhard
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.