Barcode4J 不支持开箱即用。一种解决方案(除了将此功能添加到 Barcode4J 之外)可能是创建一个双倍尺寸的新图像,并将条形码和文本区域复制到其中。
找到一个展示总体思路的小 PoC 片段。
BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi,
BufferedImage.TYPE_BYTE_BINARY, false, 0);
bean.generateBarcode(canvas, Id);
canvas.finish();
BufferedImage image = canvas.getBufferedImage();
BufferedImage temp = new BufferedImage(image.getWidth() * 2,
image.getHeight() / 2 - 1, image.getType());
Graphics2D g = temp.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
g.drawImage(image, 0, -image.getHeight() / 2, null);
g.drawImage(image, image.getWidth(), 0, null);
g.dispose();
bao.reset();
ImageIO.write(temp, "png", bao);
生成的字节存储到文件中
byte[] byteArray = generateBarcodeForId("1111");
BufferedImage image = ImageIO.read(new ByteArrayInputStream(byteArray));
ImageIO.write(image, "jpg", new File("code128.jpg"));
结果图像code128.jpg
.
另一种可能性是生成条形码HumanReadablePlacement.HRP_NONE
然后使用绘制文本canvas.deviceText(...)
.