生成条形码:
public class BarcodeUtil {
/**
* 128条形码
*
* @param strBarCode
* 条形码:0-100位
* @param dimension
* 商品条形码:尺寸
* @param barheight
* 商品条形码:高度
* @return 图片(Base64编码)
*/
public static String generateBarCode128(String strBarCode,String dimension,String barheight) {
try {
ByteArrayOutputStream outputStream = null;
BufferedImage bi = null;
JBarcode productBarcode = new JBarcode(Code128Encoder.getInstance(),
WidthCodedPainter.getInstance(),
EAN13TextPainter.getInstance());
// JBarcode productBarcode = new JBarcode(Code39ExtEncoder.getInstance(),
// WidthCodedPainter.getInstance(),
// BaseLineTextPainter.getInstance());
// 尺寸,面积,大小 密集程度
productBarcode.setXDimension(Double.valueOf(dimension).doubleValue());
// 高度 10.0 = 1cm 默认1.5cm
productBarcode.setBarHeight(Double.valueOf(10).doubleValue());
// 宽度
productBarcode.setWideRatio(Double.valueOf(20).doubleValue());
// // 是否显示字体
productBarcode.setShowText(false);
// 生成二维码
bi = productBarcode.createBarcode(strBarCode);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bi, "jpg", outputStream);
String base64Str = new String(Base64.encode(outputStream.toByteArray()));
return base64Str;
} catch (Exception e) {
e.printStackTrace();
return "encodeError";
}
}
/**
* 商品条形码
* @param strBarCode
* 商品条形码:13位
* @param dimension
* 商品条形码:尺寸
* @param barheight
* 商品条形码:高度
* @return 图片(Base64编码)
*/
public static String generateBarCode(String strBarCode,String dimension,String barheight) {
// isNumeric 是否是数值
// 校验。。。。。
try {
ByteArrayOutputStream outputStream = null;
BufferedImage bi = null;
int len = strBarCode.length();
JBarcode productBarcode = new JBarcode(EAN13Encoder.getInstance(),
WidthCodedPainter.getInstance(),
EAN13TextPainter.getInstance());
String barCode = strBarCode.substring(0, len - 1);
String code = strBarCode.substring(len - 1, len);
//校验13位
String checkCode = productBarcode.calcCheckSum(barCode);
if (!code.equals(checkCode)) {
return "checkCodeError";
}
// 尺寸,面积,大小
productBarcode.setXDimension(Double.valueOf(dimension).doubleValue());
// 高度 10.0 = 1cm 默认1.5cm
productBarcode.setBarHeight(Double.valueOf(10).doubleValue());
// 宽度
productBarcode.setWideRatio(Double.valueOf(15).doubleValue());
// 是否校验13位,默认false
productBarcode.setShowCheckDigit(true);
//显示字符串内容中是否显示检查码内容
// productBarcode.setShowCheckDigit(true);
// 生成二维码
bi = productBarcode.createBarcode(barCode);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bi, "jpg", outputStream);
String base64Str = new String(Base64.encode(outputStream.toByteArray()));
// System.err.println(encoder.encode(outputStream.toByteArray()));
return base64Str;
} catch (Exception e) {
e.printStackTrace();
return "encodeError";
}
}
/**
* @param args
* @throws InvalidAtributeException
*/
public static void main(String[] args) {
String encode2 = BarcodeUtil.generateBarCode128("34242519920924201x","0.3","30");
System.out.println(encode2);
}
}
网上找的jar,放到自己的仓库中的
<dependency>
<groupId>com.util</groupId>
<artifactId>jbarcode </artifactId>
<version>0.2.8-SNAPSHOT</version>
</dependency>
生成二维码:
/**
* 二维码生成和读的工具类
*
*/
public class QrCodeCreateUtil {
/**
* 生成包含字符串信息的二维码图片
* @param outputStream 文件输出流路径
* @param content 二维码携带信息
* @param qrCodeSize 二维码图片大小
* @param imageFormat 二维码的格式
* @throws WriterException
* @throws IOException
*/
public static String createQrCode( String content, int qrCodeSize, String imageFormat) throws WriterException, IOException{
//设置二维码纠错级别MAP
Hashtable<EncodeHintType, Comparable> hintMap = new Hashtable<EncodeHintType, Comparable>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 矫错级别
hintMap.put(EncodeHintType.CHARACTER_SET, "ISO-8859-1");
// 矫错级别
QRCodeWriter qrCodeWriter = new QRCodeWriter();
//创建比特矩阵(位矩阵)的QR码编码的字符串
BitMatrix byteMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);
// 使BufferedImage勾画QRCode (matrixWidth 是行二维码像素点)
int matrixWidth = byteMatrix.getWidth();
BufferedImage image = new BufferedImage(matrixWidth-200, matrixWidth-200, BufferedImage.TYPE_INT_RGB);
image.createGraphics();
Graphics2D graphics = (Graphics2D) image.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, matrixWidth, matrixWidth);
// 使用比特矩阵画并保存图像
graphics.setColor(Color.BLACK);
for (int i = 0; i < matrixWidth; i++){
for (int j = 0; j < matrixWidth; j++){
if (byteMatrix.get(i, j)){
graphics.fillRect(i-100, j-100, 1, 1);
}
}
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, imageFormat, baos);
String base64Str = new String(Base64.encode(baos.toByteArray()));
return base64Str;
}
/**
* 测试代码
* @throws WriterException
*/
public static void main(String[] args) throws IOException, WriterException {
String str = createQrCode("www.baidu.com",900,"JPEG");
System.out.println(str);
}
使用的依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>zxing-javase</artifactId>
<version>0.0.1</version>
</dependency>
使用img标签即可将条形码,二维码显示出来
<img src="https://img-blog.csdnimg.cn/2022010611383221318.jpg" alt="">