Zxing adalah alat parsing tentang barcode (kode satu-R, kode QR) yang disediakan oleh Google. Ini menyediakan metode untuk menghasilkan dan menganalisis kode QR. Sekarang saya akan secara singkat memperkenalkan penggunaan Java untuk menghasilkan dan menganalisis kode QR menggunakan ZXing.
1. Generasi Kode QR
1.1 Tambahkan paket zxing-core.jar ke classpath.
1.2 Generasi kode QR membutuhkan bantuan kelas matrixtoimagewriter. Kelas ini disediakan oleh Google. Anda dapat menyalin kelas ke kode sumber. Di sini saya menempelkan kode sumber kelas ini dan dapat digunakan secara langsung.
impor com.google.zxing.common.bitmatrix; impor javax.imageio.imageio; impor java.io.file; impor java.io.outputStream; impor java.io.ioException; impor java.awt.image.bufferedimage; Kelas Akhir Publik MatrixtoimageWriter {private static final int black = 0xff000000; private static final int white = 0xffffffff; matrixtoimageWriter private () {} public static bufferedImage TobufferedImage (matriks bitmatrix) {int width = matrix.getWidth (); int height = matrix.getHeight (); BufferedImage Image = BufferedImage baru (lebar, tinggi, bufferedImage.type_int_rgb); untuk (int x = 0; x <lebar; x ++) {untuk (int y = 0; y <tinggi; y ++) {image.setrgb (x, y, matrix.get (x, y)? Hitam: putih); }} mengembalikan gambar; } public static void writeToFile (matriks bitmatrix, format string, file file) melempar ioException {bufferedImage gambar = TobufferedImage (matriks); if (! imageo.write (gambar, format, file)) {lempar ioException baru ("tidak dapat menulis gambar format" + format + "ke" + file); }} public static void writeToStream (matriks bitmatrix, format string, outputStream stream) melempar ioException {bufferedImage gambar = TobufferedImage (matriks); if (! imageo.write (gambar, format, stream)) {lempar ioException baru ("tidak dapat menulis gambar format" + format); }}}1.3 Tulis kode implementasi yang menghasilkan kode QR
coba {string content = "120605181003; http: //www.cnblogs.com/jtmjx"; String path = "c:/pengguna/administrator/desktop/testimage"; Multiformatwriter multiformatwriter = multiformatwriter baru (); Petunjuk peta = hashmap baru (); hints.put (encodehinttype.character_set, "UTF-8"); Bitmatrix bitmatrix = multiformatwriter.encode (konten, barcodeformat.qr_code, 400, 400, petunjuk); File file1 = file baru (path, "nambeginner.jpg"); MatrixtoimageWriter.writetofile (bitmatrix, "jpg", file1); } catch (Exception e) {E.PrintStackTrace (); }Sekarang setelah berjalan, Anda dapat menghasilkan gambar kode QR. Bukankah itu sangat sederhana? Selanjutnya, mari kita lihat cara menguraikan kode QR
2. Analisis Kode QR
2.1 Tambahkan paket zxing-core.jar ke classpath.
2.2 Like Generation, kita membutuhkan kelas tambahan (bufferedimageluminancesource), yang juga disediakan oleh Google. Di sini saya juga menempelkan kode sumber kelas ini dan dapat menyalin dan menggunakannya secara langsung, menyimpan masalah pencarian.
Bufferedimageluminancesource impor com.google.zxing.luminancesource; impor java.awt.graphics2d; impor java.awt.geom.affinetransform; impor java.awt.image.bufferedimage; kelas akhir publik buferedimageluminancesource memperluas luminancesource {private final bufferedImage Image; Int final pribadi kiri; Private Final Int Top; publik bufferedimageluminancesource (gambar buferedimage) {this (image, 0, 0, image.getWidth (), image.getHeight ()); } public bufferedimageluminancesource (gambar buferedImage, int kiri, int atas, lebar int, int tinggi) {super (lebar, tinggi); int sourceWidth = image.getWidth (); int sourceHeight = image.getHeight (); if (left + width> sourceWidth || Top + Height> SourceHeight) {lempar IllegalArgumentException baru ("Crop Rectangle tidak sesuai dengan data gambar."); } untuk (int y = top; y <top+tinggi; y ++) {for (int x = kiri; x <kiri+lebar; x ++) {if ((gambar.getrgb (x, y) & 0xfffff); // = putih}}} this.image = BufferedImage baru (SourceWidth, SourceHeight, bufferedImage.type_byte_gray); this.image.getGraphics (). DrawImage (gambar, 0, 0, null); this.left = kiri; this.top = top; } @Override public byte [] getrow (int y, byte [] baris) {if (y <0 || y> = getHeight ()) {lempar baru ilegalargumentException ("Baris yang diminta berada di luar gambar:" + y); } int lebar = getWidth (); if (row == null || row.length <width) {row = byte baru [lebar]; } image.getRaster (). getDataelement (kiri, atas + y, lebar, 1, baris); Baris pengembalian; } @Override public byte [] getMatrix () {int width = getWidth (); int tinggi = getHeight (); Area int = lebar * tinggi; byte [] matriks = byte baru [area]; image.getRaster (). getDataelement (kiri, atas, lebar, tinggi, matriks); matriks pengembalian; } @Override public boolean isCropsupported () {return true; } @Override Public Luminancesource CROP (int kiri, int top, int lebar, int tinggi) {return baru bufferedimageluminancesource (gambar, this.left + kiri, this.top + atas, lebar, tinggi); } @Override public boolean isRotatesupported () {return true; } @Override Public Luminancesource rotatecounterclockwise () {int sourceWidth = image.getWidth (); int sourceHeight = image.getHeight (); Affinetransform transform = affinetransform baru (0,0, -1.0, 1.0, 0.0, 0.0, SourceWidth); BufferedImage rotedImage = BufferedImage baru (SourceHeight, SourceWidth, bufferedImage.type_byte_gray); Grafik2d g = rotedImage.creategraphics (); G.DrawImage (gambar, transformasi, null); g.dispose (); Int width = getWidth (); return baru bufferedimageluminancesource (rotedimage, atas, sourceWidth - (kiri + lebar), getHeight (), lebar); }}2.3 Tulis kode implementasi yang mem -parsing kode QR
coba {multiformatreader formatReader = new MultiformatReader (); String filepath = "c: /users/administrator/desktop/testimage/test.jpg"; File file = file baru (filepath); BufferedImage Image = ImageIo.read (File) ;; Sumber Luminancesource = Bufferedimageluminancesource baru (gambar); Binarizer binarizer = hybridbinarizer baru (sumber); BinaryBitMap BinaryBitMap = BinaryBitMap baru (binarizer); Petunjuk peta = hashmap baru (); hints.put (encodehinttype.character_set, "UTF-8"); Hasil hasil = formatReader.decode (BinaryBitmap, petunjuk); System.out.println ("result ="+ result.toString ()); System.out.println ("resultFormat ="+ result.getBarcodeformat ()); System.out.println ("resultText ="+ result.getText ()); } catch (Exception e) {E.PrintStackTrace (); }Sekarang setelah berjalan, Anda dapat melihat bahwa konsol mencetak konten kode QR.
Sejauh ini, zxing menggunakan zxing untuk menghasilkan dan menguraikan kode QR dan demonstrasi selesai, terutama membuat memo untuk diri sendiri, dan pada saat yang sama membuat kenyamanan bagi mereka yang membutuhkan. Hehe!
Contoh sederhana di atas Java menggunakan zxing untuk menghasilkan kode QR adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.