2009-07-16 7 views

Antwort

26

Mercer - nein, es gibt auch einen Encoder in der Bibliothek. com.google.zxing.qrcode.encoder. Wir bieten Ihnen zusätzlich zu einer Beispiel-Webanwendung mit Google Chart-APIs

+0

ok danke! ich muss nur ein Bild mit dem qrCode.getMatrix() erstellen. getArray(); – oneeyejack

+7

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

+11

... oder verwenden Sie die bereitgestellte Klasse MatrixToImageWriter, um all dies für Sie zu tun! –

14

ist eine open-source, multi-format 1D/2D Barcode Bildverarbeitungsbibliothek in Java implementiert. Es ist unter der Die Apache-Lizenz freigegeben, so ermöglicht es die Verwendung des Quellcodes für die Entwicklung von proprietärer Software sowie freie und Open-Source-Software.

+1

Generiert keine QR-Codes. Es scannt sie nur. –

+2

In ihrem Webapp-Beispiel des qr-Generators verwenden sie http://code.google.com/apis/chart/types.html#qrcodes, um den QR-Code zu generieren. –

+0

Ich kann nicht vom Projekt auf das Web zugreifen, also keine Google API oder Web Service. – oneeyejack

2

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).

+0

Reagieren auf diesen sehr alten Kommentar Ich habe gerade gesehen: es verwendet 'Hashtable' für Kompatibilität mit J2ME, die nicht' Map' hat. Aber seit V2.0 wurde die J2ME-Unterstützung gelöscht und die API nimmt eine 'Map'. –