Java를 사용하여 문자가 있는 QR 코드 생성
주로 구글의
zxing
패키지를 사용했는데 다음에 예시 코드를 제시했기 때문에 모두의 이해와 학습에 편리하다. 코드는 모두 초보적인 구조에 속하고 기능이 있기 때문에 실제 사용 상황에 따라 보완하고 최적화해야 한다.첫 번째 단계,maven 가져오기zxing
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
2단계, QR코드 생성을 시작합니다.
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
/**
*
* @param matrix zxing
* @return
*/
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;
}
/**
*
* @param content
* @param format jpg
* @param file
* @throws Exception
*/
public static void writeToFile(String content, String format, File file)
throws Exception {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
@SuppressWarnings("rawtypes")
Map hints = new HashMap();
// UTF-8,
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//
hints.put(EncodeHintType.MARGIN,1);
//
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
//
BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
BufferedImage image = toBufferedImage(bitMatrix);
if (!ImageIO.write(image, format, file)) {
throw new IOException("Could not write an image of format " + format + " to " + file);
}
}
세 번째 단계는 QR코드 이미지에 텍스트를 기록합니다.
/**
*
* @param pressText
* @param qrFile
* @param fontStyle
* @param color
* @param fontSize
*/
public static void pressText(String pressText, File qrFile, int fontStyle, Color color, int fontSize) throws Exception {
pressText = new String(pressText.getBytes(), "utf-8");
Image src = ImageIO.read(qrFile);
int imageW = src.getWidth(null);
int imageH = src.getHeight(null);
BufferedImage image = new BufferedImage(imageW, imageH, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, imageW, imageH, null);
//
g.setColor(color);
//
Font font = new Font(" ", fontStyle, fontSize);
FontMetrics metrics = g.getFontMetrics(font);
//
int startX = (WIDTH - metrics.stringWidth(pressText)) / 2;
int startY = HEIGHT/2;
g.setFont(font);
g.drawString(pressText, startX, startY);
g.dispose();
FileOutputStream out = new FileOutputStream(qrFile);
ImageIO.write(image, "JPEG", out);
out.close();
System.out.println("image press success");
}
네 번째 단계,main 방법에서 테스트를 하면 중간에 문자가 있는 QR코드가 생성된다
public static void main(String[] args) throws Exception {
File qrcFile = new File("/Users/deweixu/","google.jpg");
writeToFile("www.google.com.hk", "jpg", qrcFile);
pressText(" ", qrcFile, 5, Color.RED, 32);
}
총결산이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.