【亚伟-技术分享系列】之代码生成二维码原创
5人赞赏了该文章
435次浏览
编辑于2022年05月06日 18:10:02
本文分享一下使用代码后台生成二维码的开发样例,仅供大家参考,如果有帮助,希望大家点赞、收藏、转发,谢谢!
开发中需要用到的第三方jar包,请看附件。
package com.common; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; import javax.imageio.ImageIO; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintException; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.OrientationRequested; import javax.swing.JOptionPane; import com.swetake.util.Qrcode; /** * @description(类描述): 二维码生成测试类 */ public class QrcodeUtils { /** * @description(方法描述): 代码生成二维码 */ public static void createQrcode() throws Exception{ String number ="编码"; String name ="名称"; Qrcode qrcode = new Qrcode(); qrcode.setQrcodeErrorCorrect('M'); // 纠错等级(分为L、M、H三个等级) qrcode.setQrcodeEncodeMode('B'); // N代表数字,A代表a-Z,B代表其它字符 qrcode.setQrcodeVersion(13); // 版本 int width = 67 + 12 * (13); // 宽 int height = 67 + 12 * (13); // 高 BufferedImage bufferedImagecontent = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 图片类型 // 绘图 Graphics2D gs = bufferedImagecontent.createGraphics(); // 生成二维码中要存储的信息 String qrData = "编码:" + number + "\n" + "名称:" + name + "\n"; System.out.println("开始绘图"); // 设置二维码内容字体样式 Font font = new Font("微软雅黑", Font.PLAIN, 12); gs.setColor(Color.BLACK); gs.setFont(font); // 设置一下二维码的像素 System.out.println("设置一下二维码的像素"); gs.setBackground(Color.WHITE); gs.setColor(Color.BLACK); gs.clearRect(0, 0, width, height);// 清除下画板内容 System.out.println("清除下画板内容"); // 设置下偏移量,如果不加偏移量,有时会导致出错。 int pixoff = 2; System.out.println("设置下偏移量,如果不加偏移量,有时会导致出错"); byte[] d = qrData.getBytes("UTF-8"); if (d.length > 0 && d.length < 300) { boolean[][] s = qrcode.calQrcode(d); for (int a = 0; a < s.length; a++) { for (int b = 0; b < s.length; b++) { if (s[b][a]) { gs.fillRect(b * 3 + pixoff, a * 3 + pixoff, 3, 3); } } } } gs.dispose(); System.out.println("结束newQrcode()"); // 设置简介内容字体样式 Font textfont = new Font("微软雅黑", Font.BOLD, 24); BufferedImage bufferedImageintro = new BufferedImage(575, 345, BufferedImage.TYPE_INT_BGR); Graphics g = bufferedImageintro.getGraphics(); g.setClip(0, 0, 575, 345); g.setColor(Color.white); g.fillRect(0, 0, 575, 345); // 先用黑色填充整张图片,也就是背景 g.setColor(Color.black); // 再换成黑色 g.setFont(textfont); // 设置画笔字体 g.drawString("编码:" + number, 0, 40); // 画出字符串,设置坐标 g.drawString("名称:" + name, 0, 100); // 画出字符串 g.dispose(); bufferedImagecontent.flush(); // 重新绘图 Graphics g1 = bufferedImageintro.getGraphics(); g1.drawImage(bufferedImagecontent, 365, 70, 200, 200, null); ImageIO.write(bufferedImageintro, "jpg", new File("D:/codecode/" + number + "-" + name + ".jpg"));// 保存到本地路径 if (bufferedImageintro != null) /* 当打印内容不为空时 */ { DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG; PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); DocPrintJob job = printService.createPrintJob(); PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); pras.add(OrientationRequested.PORTRAIT);// 设置成竖打 DocAttributeSet das = new HashDocAttributeSet(); System.out.println("自定义纸张大小"); // 指定打印内容 ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(bufferedImageintro, "png", os); System.out.println("指定打印内容"); InputStream is = new ByteArrayInputStream(os.toByteArray()); Doc doc = new SimpleDoc(is, flavor, das);/**/ System.out.println("不显示打印对话框,直接进行打印工作"); try { job.print(doc, pras); // 进行每一页的具体打印操作 } catch (PrintException pe) { pe.printStackTrace(); } } else { // 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog(null, "Sorry, Printer Job is Empty, Print Cancelled!", "Empty", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); } } }
第三方JAR包.rar(943.82KB)
赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读