QR 코드는 어디에나 있습니다. 스캔하면 선물을 받을 수 있습니다. 이제 QR 코드가 너무 인기가 있으므로 QR 코드가 생성되는 방법에 대해 명확하게 설명하지 않아도 됩니다. 이제 QR을 배우는 데 도움이 되도록 이 기사를 공유하겠습니다. QR 코드를 생성하는 방법.
사실 이 기능은 고글에서 출시한 jar를 이용해서 주로 사용하고 있습니다.
1. QR 코드 생성
클래스 경로에 Zxing-core.jar 패키지를 추가합니다.
QR 코드를 생성하려면 Google에서 제공하는 MatrixToImageWriter 클래스의 도움이 필요합니다. 이 클래스를 소스 코드에 복사하여 사용할 수 있습니다. 곧장.
QR코드를 직접 생성할 수 있는 코드
public void test1() throws Exception{ String content = "www.baidu.com"; String path = "d://"; MultiFormatWriter multiFormatWriter = new MultiFormatWriter();//Zxing是Google提供的关于条码 Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400,hints);//这里是照片的大小 File file1 = new File(path,"my.jpg"); MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1); System.out.println("执行完毕"); }
알아보면 이 코드를 복사해본 결과 MatrixToImageWriter 오류가 있다는 것을 발견하게 되므로 찾아야 하는데, 여기에 게시했습니다. 코드를 직접 사용할 수 있습니다.
import com.google.zxing.common.BitMatrix; import javax.imageio.ImageIO; import java.io.File; import java.io.OutputStream; import java.io.IOException; import java.awt.image.BufferedImage; public final class MatrixToImageWriter { private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; private MatrixToImageWriter() {} public static BufferedImage toBufferedImage(BitMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, 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); } } return image; } public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, file)) { throw new IOException("Could not write an image of format " + format + " to " + file); } } public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, stream)) { throw new IOException("Could not write an image of format " + format); } } }
이제 d 드라이브의 루트 디렉터리에서 생성된 QR 코드를 다운로드할 수 있습니다
QR 코드 분석
세대와 마찬가지로 보조 클래스(BufferedImageLuminanceSource)가 필요합니다. ), 이 유형은 Google에서도 제공됩니다. 여기에는 이 유형의 소스 코드도 게시되어 있으므로 직접 복사하여 사용할 수 있으므로
BufferedImageLuminanceSource import com.google.zxing.LuminanceSource; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; public final class BufferedImageLuminanceSource extends LuminanceSource { 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; } @Override public 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; } @Override public 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; } @Override public boolean isCropSupported() { return true; } @Override public LuminanceSource crop(int left, int top, int width, int height) { return new BufferedImageLuminanceSource(image, this.left + left, this.top + top, width, height); } @Override public boolean isRotateSupported() { return true; } @Override public 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); } }
QR 코드 구문 분석 코드
MultiFormatReader formatReader = new MultiFormatReader(); String filePath = "图片的路径"; File file = new File(filePath); BufferedImage image = ImageIO.read(file);; LuminanceSource source = new BufferedImageLuminanceSource(image); Binarizer binarizer = new HybridBinarizer(source); BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer); Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); Result result = formatReader.decode(binaryBitmap,hints); System.out.println("result = "+ result.toString()); System.out.println("resultFormat = "+ result.getBarcodeFormat()); System.out.println("resultText = "+ result.getText()); tch (Exception e) { e.printStackTrace();
이제 콘솔에서 QR코드의 내용을 볼 수 있습니다.
위는 에디터가 소개한 ZXing-core의 QR 코드 생성 방법과 분석입니다. 궁금한 점이 있으면 메시지를 남겨주세요. 모든 사람에게 즉시 답장을 보내십시오. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
ZXing-core의 QR 코드 생성 방법과 관련 기사 분석에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!
