MatrixToImageWriter verwendet BitMatrix, nicht ByteMatrix wie von QRCode.getMatrix zurückgegeben. um android Source suchen, fand ich folgendes Proof of Concept Lösung:
try {
MultiFormatWriter writer = new MultiFormatWriter();
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
MatrixToImageWriter.writeToFile(writer.encode("hello world", BarcodeFormat.QR_CODE, 800, 800, hints),
"png", new File("/tmp/qrcode.png"));
} catch (Exception e) {
System.out.println("failure: " + e);
}
btw Hashtable in API zur Einführung ist nicht sauber. Bitte benutzen Sie Karte. Nicht viele Leute benutzen Hashtable trotzdem, Sie sollten stattdessen fast immer HashMap verwenden (abgesehen von ein paar Anwendungsfällen).
ok danke! ich muss nur ein Bild mit dem qrCode.getMatrix() erstellen. getArray(); – oneeyejack
Falls jemand anderes dies tut, ist die Grundidee verständlich. Verwenden Sie Encoder.encode(), um die Details eines neu instanziierten QRCodes "auszufüllen". Holen Sie dann das Byte [] [] von QRCode.getMatrix(). GetArray() wie oben vorgeschlagen. Jede Zeile von Bytes scheint eine Reihe von Pixeln für den QRCode zu sein, wobei jedes Byte null oder eins ist. An dieser Stelle könnten Sie einfach die Pixel zu einem BufferedImage malen oder einen Raster daraus machen oder etwas daraus in ein AWT-Bild umwandeln. – CarlG
... oder verwenden Sie die bereitgestellte Klasse MatrixToImageWriter, um all dies für Sie zu tun! –