我在jar文件(在示例目录中)中找到了一个示例。如果有其他人正在寻找,我在这里发布它。
此外,这是所有支持的条形码的list清单。
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;
public class SampleBitmapBarcodeWithBean {
public static void main(String[] args) {
try {
Code39Bean bean = new Code39Bean();
final int dpi = 150;
bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi));
bean.setWideFactor(3);
bean.doQuietZone(false);
File outputFile = new File("out.jpg");
OutputStream out = new FileOutputStream(outputFile);
try {
BitmapCanvasProvider canvas = new BitmapCanvasProvider(
out, "image/jpeg", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
bean.generateBarcode(canvas, "123456");
canvas.finish();
} finally {
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
还有一个更高级的例子,可以将自定义元素添加到条形码中
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.krysalis.barcode4j.impl.datamatrix.DataMatrixBean;
import org.krysalis.barcode4j.impl.datamatrix.SymbolShapeHint;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.output.bitmap.BitmapEncoder;
import org.krysalis.barcode4j.output.bitmap.BitmapEncoderRegistry;
import org.krysalis.barcode4j.tools.UnitConv;
public class SampleBarcodeEnhanced {
private void generate(File outputFile) throws IOException {
String msg = "Sample Message";
String[] paramArr = new String[] {"Information 1", "Information 2", "Barcode4J is cool!"};
DataMatrixBean bean = new DataMatrixBean();
final int dpi = 200;
bean.setModuleWidth(UnitConv.in2mm(8.0f / dpi));
bean.doQuietZone(false);
bean.setShape(SymbolShapeHint.FORCE_RECTANGLE);
boolean antiAlias = false;
int orientation = 0;
BitmapCanvasProvider canvas = new BitmapCanvasProvider(
dpi, BufferedImage.TYPE_BYTE_BINARY, antiAlias, orientation);
bean.generateBarcode(canvas, msg);
canvas.finish();
BufferedImage symbol = canvas.getBufferedImage();
int fontSize = 32;
int lineHeight = (int)(fontSize * 1.2);
Font font = new Font("Arial", Font.PLAIN, fontSize);
int width = symbol.getWidth();
int height = symbol.getHeight();
FontRenderContext frc = new FontRenderContext(new AffineTransform(), antiAlias, true);
for (int i = 0; i < paramArr.length; i++) {
String line = paramArr[i];
Rectangle2D bounds = font.getStringBounds(line, frc);
width = (int)Math.ceil(Math.max(width, bounds.getWidth()));
height += lineHeight;
}
int padding = 2;
width += 2 * padding;
height += 3 * padding;
BufferedImage bitmap = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g2d = (Graphics2D)bitmap.getGraphics();
g2d.setBackground(Color.white);
g2d.setColor(Color.black);
g2d.clearRect(0, 0, bitmap.getWidth(), bitmap.getHeight());
g2d.setFont(font);
AffineTransform symbolPlacement = new AffineTransform();
symbolPlacement.translate(padding, padding);
g2d.drawRenderedImage(symbol, symbolPlacement);
int y = padding + symbol.getHeight() + padding;
for (int i = 0; i < paramArr.length; i++) {
String line = paramArr[i];
y += lineHeight;
g2d.drawString(line, padding, y);
}
g2d.dispose();
String mime = "image/png";
OutputStream out = new FileOutputStream(outputFile);
try {
final BitmapEncoder encoder = BitmapEncoderRegistry.getInstance(mime);
encoder.encode(bitmap, out, mime, dpi);
} finally {
out.close();
}
}
public static void main(String[] args) {
try {
SampleBarcodeEnhanced app = new SampleBarcodeEnhanced();
File outputFile = new File("out.png");
app.generate(outputFile);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
}
BitmapCanvasProvider
构造函数的第一个参数。 - mangusta