ZXING-это инструмент анализа о штрих-кодах (код One-R, QR-код), предоставляемый Google. Он обеспечивает методы генерации и анализа QR -кодов. Теперь я кратко представлю использование Java для генерации и анализа QR -кодов с использованием ZXING.
1. Генерация QR -кода
1.1 Добавьте пакет ZXING-CORE.JAR в ClassPath.
1.2. Генерация QR -кода требует помощи класса MatrixtoImageWriter. Этот класс предоставляется Google. Вы можете скопировать класс в исходный код. Здесь я вставляю исходный код этого класса и могу использоваться напрямую.
Импорт com.google.zxing.common.bitmatrix; Импорт javax.imageio.imageio; Импорт java.io.file; импортировать java.io.outputstream; импортировать java.io.ioexception; Импорт java.awt.image.bufferedImage; Public Final Class MatrixtoImageWriter {Private Static Final Int Black = 0xff000000; частный статический конечный int white = 0xffffffff; Private MatrixtoImageWriter () {} public Static BufferedImage TobufferedImage (Bitmatrix Matrix) {int width = matrix.getWidth (); int height = matrix.getheight (); BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); for (int x = 0; x <width; x ++) {for (int y = 0; y <height; y ++) {image.setrgb (x, y, matrix.get (x, y)? Black: White); }} вернуть изображение; } public static void writetOfile (матрица Bitmatrix, формат строки, файл файла) бросает ioException {buffereMage image = tobufferedImage (matrix); if (! Imageio.write (image, format, file)) {бросить новое ioException («Не удалось бы написать изображение формата» + format + »в" + file); }} public static void writeToStream (матрица Bitmatrix, формат строки, выходной поток) Throws IOException {BuffereMage Image = tobufferedImage (matrix); if (! Imageio.write (Image, Format, Stream)) {бросить новое ioException («Не может написать изображение формата» + формат); }}}1.3 Напишите код реализации, который генерирует QR -код
try {String content = "120605181003; http: //www.cnblogs.com/jtmjx"; String path = "c:/users/administrator/desktop/testimage"; MultiformatTwriter MultiformatWriter = new MultiformatWriter (); Map nts = new hashmap (); nts.put (encodehinttype.character_set, "utf-8"); Bitmatrix Bitmatrix = multiformatwriter.encode (content, barcodeformat.qr_code, 400, 400, подсказки); File file1 = новый файл (path, "nambeginner.jpg"); MatrixtoImageWriter.WriteToFile (Bitmatrix, "jpg", file1); } catch (Exception e) {e.printstackTrace (); }Теперь после запуска вы можете сгенерировать QR -код. Разве это не очень просто? Далее, давайте посмотрим, как проанализировать QR -код
2. Анализ QR -кода
2.1 Добавьте пакет ZXING-CORE.JAR в ClassPath.
2.2 Как и поколение, нам нужен вспомогательный класс (BufferedImageLuminancesource), который также предоставляется Google. Здесь я также вставляю исходный код этого класса и могу копировать и использовать его напрямую, сохраняя проблемы поиска.
BufferedImageLuminancesource Import com.google.zxing.luminancesource; импортировать java.awt.graphics2d; импортировать java.awt.geom.affineTransform; Импорт java.awt.image.bufferedImage; публичный финальный класс BufferedImageLuminancesource расширяет Luminancesource {Private Final BuffereMage Image; частный финал int остался; Частный финальный топ; public BufferedImageLuminancesource (BufferedImage Image) {this (Image, 0, 0, image.getWidth (), image.getheight ()); } public BufferedImageLuminancesource (BufferedImage Image, int left, int top, int width, int height) {super (ширина, высота); int sourcewidth = image.getWidth (); int sourceHeight = image.getheight (); if (left + width> sourcewidth || top + height> sourceheight) {бросить новый allosalargumentException («Прямоугольник Crop не вписывается в данные изображения.»); } for (int y = top; y <top+height; y ++) {for (int x = слева; x <слева+ширина; x ++) {if ((image.getrgb (x, y) & 0xff000000) == 0) {image.setrgb (x, y, 0xffffff); // = White}}} this.Image = new BufferedImage (SourceWidth, SourceHeight, BufferedImage.Type_byte_gray); this.image.getGraphics (). DrawMage (Image, 0, 0, NULL); this.left = осталось; this.top = top; } @Override public byte [] getRow (int y, byte [] row) {if (y <0 || y> = getheight ()) {бросить новый allosalargumentException ("Запрашиваемая строка находится вне изображения:" + y); } int width = getWidth (); if (row == null || row.length <width) {row = new Byte [width]; } image.getraster (). getDataelements (слева, топ + y, ширина, 1, ряд); вернуть ряд; } @Override public byte [] getMatrix () {int width = getWidth (); int height = getheight (); int area = ширина * высота; byte [] matrix = new Byte [область]; image.getraster (). getDatelements (слева, верх, ширина, высота, матрица); вернуть матрицу; } @Override public boolean iscropSupported () {return true; } @Override public luminancesource crop (int left, int top, int width, int height) {return new bufferedimageluminancesource (image, this.left + слева, this.top + top, width, высота); } @Override public boolean isrotatesUpported () {return true; } @Override public luminancesource rotateCounterClockweep () {int sourcewidth = image.getWidth (); int sourceHeight = image.getheight (); AffineTransform Transform = New AffineTransform (0,0, -1,0, 1,0, 0,0, 0,0, исходная власть); BufferedImage RotatedImage = New BufferedImage (SourceHeight, SourceWidth, BufferedImage.Type_byte_gray); Graphics2d g = rotatedimage.creategraphics (); g.drawimage (изображение, преобразование, ноль); g.dispose (); int width = getWidth (); вернуть новый BufferedImageLuminancesource (RotatedImage, Top, SourceWidth - (левая + ширина), getheight (), ширина); }}2.3 Напишите код реализации, который анализирует QR -код
try {multiformatreader formatreader = new MultiformatReader (); String filePath = "c: /users/administrator/desktop/testimage/test.jpg"; File file = new File (filePath); BufferedImage Image = imageio.read (file) ;; Luminancesource Source = новый BufferedImageLuminancesource (изображение); Binarizer Binarizer = новый гибридбинаризер (источник); BinaryBitmap BinaryBitMap = новый BinaryBitMap (Binarizer); Map nts = new hashmap (); nts.put (encodehinttype.character_set, "utf-8"); Результат Result = FormatReader.Decode (BinaryBitMap, подсказки); System.out.println ("result ="+ result.tostring ()); System.out.println ("resultformat ="+ result.getBarcodeformat ()); System.out.println ("resultText ="+ result.getText ()); } catch (Exception e) {e.printstackTrace (); }Теперь после запуска вы можете видеть, что консоль печатает содержимое QR -кода.
До сих пор ZXING использовал ZXING для генерации и разбора QR -кода, и демонстрация была завершена, в основном делая записки для себя, и в то же время создавая удобство для нуждающихся. хе -хе!
Приведенный выше простой пример Java с использованием ZXING для генерации QR -кодов - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.