Java code parsing QR code, java Parsing

Source: Internet
Author: User

Java code parsing QR code, java Parsing

Java code parsing QR code general steps

This article uses google's zxing technology to parse the QR code. The general steps for parsing the QR Code are as follows:

1. Download The zxing-core jar package:

 

2. Create a BufferedImageLuminanceSource class that inherits LuminanceSource. This class is included in google's source code. However, for ease of use, the following source code can be directly copied and used:

private final BufferedImage image;private final int left;private final int top;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(width, height);int sourceWidth = image.getWidth();int sourceHeight = image.getHeight();if (left + width > sourceWidth || top + height > sourceHeight) {throw new IllegalArgumentException("Crop rectangle does not fit within image data.");}for (int y = top; y < top + height; y++) {for (int x = left; x < left + width; x++) {if ((image.getRGB(x, y) & 0xFF000000) == 0) {image.setRGB(x, y, 0xFFFFFFFF); // = white}}}this.image = new BufferedImage(sourceWidth, sourceHeight, BufferedImage.TYPE_BYTE_GRAY);this.image.getGraphics().drawImage(image, 0, 0, null);this.left = left;this.top = top;}@Overridepublic byte[] getRow(int y, byte[] row) {if (y < 0 || y >= getHeight()) {throw new IllegalArgumentException("Requested row is outside the image: " + y);}int width = getWidth();if (row == null || row.length < width) {row = new byte[width];}image.getRaster().getDataElements(left, top + y, width, 1, row);return row;}@Overridepublic byte[] getMatrix() {int width = getWidth();int height = getHeight();int area = width * height;byte[] matrix = new byte[area];image.getRaster().getDataElements(left, top, width, height, matrix);return matrix;}@Overridepublic boolean isCropSupported() {return true;}@Overridepublic LuminanceSource crop(int left, int top, int width, int height) {return new BufferedImageLuminanceSource(image, this.left + left, this.top + top, width, height);}@Overridepublic boolean isRotateSupported() {return true;}@Overridepublic LuminanceSource rotateCounterClockwise() {int sourceWidth = image.getWidth();int sourceHeight = image.getHeight();AffineTransform transform = new AffineTransform(0.0, -1.0, 1.0, 0.0, 0.0, sourceWidth);BufferedImage rotatedImage = new BufferedImage(sourceHeight, sourceWidth, BufferedImage.TYPE_BYTE_GRAY);Graphics2D g = rotatedImage.createGraphics();g.drawImage(image, transform, null);g.dispose();int width = getWidth();return new BufferedImageLuminanceSource(rotatedImage, top, sourceWidth - (left + width), getHeight(), width);}

3. Create a startup class to parse the QR code:

Public static void main (String [] args) {try {MultiFormatReader formatReader = new MultiFormatReader (); String filePath = "D:/test/blog .jpg "; file file = new File (filePath); BufferedImage image = ImageIO. read (file); LuminanceSource source = new bytes (image); Binarizer binarizer = new HybridBinarizer (source); BinaryBitmap binaryBitmap = new BinaryBitmap (binarizer); Map hints = new HashMap (); // decode the settings as UTF-8 hints. put (EncodeHintType. CHARACTER_SET, "UTF-8"); // optimize the hints precision. put (DecodeHintType. TRY_HARDER, Boolean. TRUE); // in complex mode, enable the PURE_BARCODE mode hints. put (DecodeHintType. PURE_BARCODE, Boolean. TRUE); Result result = formatReader. decode (binaryBitmap, hints); System. out. println ("result =" + result. toString (); System. out. println ("resultFormat =" + result. getBarcodeFormat (); System. out. println ("resultText =" + result. getText ();} catch (Exception e) {e. printStackTrace ();}}

4. After testing, you can resolve the QR code and obtain the url of the QR code;

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.