MatrixToImageWriter utilise BitMatrix, pas ByteMatrix comme retourné par QRCode.getMatrix. en regardant sourcecode android, j'ai trouvé la preuve suivante de solution concept:
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 imposant Hashtable dans l'API est pas propre. veuillez utiliser la carte. peu de gens utilisent encore Hashtable de toute façon, vous devriez presque toujours utiliser HashMap à la place (sauf quelques cas d'utilisation).
ok merci! Je dois juste créer une image en utilisant le qrCode.getMatrix(). getArray(); – oneeyejack
Dans le cas où quelqu'un d'autre fait cela, voici l'idée de base. Utilisez Encoder.encode() pour «compléter» les détails d'un QRCode nouvellement instancié. Ensuite, récupérez le byte [] [] de QRCode.getMatrix(). GetArray() comme suggéré ci-dessus. Chaque ligne d'octets semble être une ligne de pixels pour le QRCode, chaque octet étant égal à zéro ou à un. À ce stade, vous pouvez simplement peindre les pixels d'une image tamponnée ou en faire un raster ou quelque chose pour le transformer en une image AWT. – CarlG
... ou utilisez la classe fournie MatrixToImageWriter pour faire tout cela pour vous! –