描述: 拷贝代码时,每行会有 1. 这样的,很讨厌。[0-9]+/.
------------------------------------------------------------------------------------------------------
1.private static final int HEIGHT_SPACE = 20;// 图片之间的间隔
2.
3.public static void main(String[] args) throws Exception {
4. List<String> codeList = new ArrayList<String>();
5. codeList.add("ABCD124645765");
6. codeList.add("ABCD12-4645-765");
7. codeList.add("ABCD12464-5765");
8. codeList.add("AB-CD1-246457-65");
9. createBarcodeImage(200, 100, codeList);
10. System.out.println("The image is created.");
11.}
12.
13./**
14. * Creates the barcode image.
15. *
16. * @param barCodeWidth
17. * 生成条形码的宽度
18. * @param barCodeHeight
19. * 生成条形码的高度
20. * @param codeList
21. * 要生成条形码的字符集合
22. *
23. * @throws Exception
24. * the exception
25. */
26.public static void createBarcodeImage(int barCodeWidth, int barCodeHeight,
27. List<String> codeList) throws Exception {
28. // list不能为空
29. Assert.assertTrue("The list can not empty.", codeList.size() > 0);
30. // 图片宽度
31. int imageWidth = (barCodeWidth + barCodeWidth / 2) * codeList.size() + barCodeWidth / 2;
32. // 图片高度
33. int imageHeight = barCodeHeight + HEIGHT_SPACE * 2;
34. BufferedImage img = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
35. Graphics2D g = (Graphics2D) img.getGraphics();
36. g.fillRect(0, 0, imageWidth, imageHeight);
37. Font font = new java.awt.Font("", java.awt.Font.PLAIN, 12);
38. Barcode128 barcode128 = new Barcode128();
39. FontRenderContext fontRenderContext = g.getFontRenderContext();
40. // 条形码(文字)的高度
41. int stringHeight = (int) font.getStringBounds("", fontRenderContext).getHeight();
42. // 图片横坐标开始位置
43. int startX = barCodeWidth / 2;
44. // 图片纵坐标开始位置
45. int imageStartY = (imageHeight - barCodeHeight - stringHeight) / 2;
46. int stringStartY = imageStartY * 2 + barCodeHeight;// 条形码(文字)开始位置
47. for (String code : codeList) {
48. int codeWidth = (int) font.getStringBounds(code, fontRenderContext).getWidth();
49. barcode128.setCode(code);
50. Image codeImg = barcode128.createAwtImage(Color.black, Color.white);
51. g.drawImage(codeImg, startX, imageStartY, barCodeWidth, barCodeHeight, Color.white, null);
52. // 为图片添加条形码(文字),位置为条形码图片的下部居中
53. AttributedString ats = new AttributedString(code);
54. ats.addAttribute(TextAttribute.FONT, font, 0, code.length());
55. AttributedCharacterIterator iter = ats.getIterator();
56. // 设置条形码(文字)的颜色为蓝色
57. g.setColor(Color.BLUE);
58. // 绘制条形码(文字)
59. g.drawString(iter, startX + (barCodeWidth - codeWidth) / 2, stringStartY);
60. // 更改图片横坐标开始位置,图片之间的空隙为条形码的宽度的一半
61. startX = startX + barCodeWidth / 2 + barCodeWidth;
62. }
63. g.dispose();
64. OutputStream os = new BufferedOutputStream(new FileOutputStream("/home/admin/codeList.png"));
65. ImageIO.write(img, "PNG", os);
66.}
-----------------------------------------------------------------------------------------------------------------
输出格式
private static final int HEIGHT_SPACE = 20;// 图片之间的间隔
public static void main(String[] args) throws Exception {
List<String> codeList = new ArrayList<String>();
codeList.add("ABCD124645765");
codeList.add("ABCD12-4645-765");
codeList.add("ABCD12464-5765");
codeList.add("AB-CD1-246457-65");
createBarcodeImage(200, 100, codeList);
System.out.println("The image is created.");
}
/**
* Creates the barcode image.
*
* @param barCodeWidth
* 生成条形码的宽度
* @param barCodeHeight
* 生成条形码的高度
* @param codeList
* 要生成条形码的字符集合
*
* @throws Exception
* the exception
*/
public static void createBarcodeImage(int barCodeWidth, int barCodeHeight,
List<String> codeList) throws Exception {
// list不能为空
Assert.assertTrue("The list can not empty.", codeList.size() > 0);
// 图片宽度
int imageWidth = (barCodeWidth + barCodeWidth / 2) * codeList.size() + barCodeWidth / 2;
// 图片高度
int imageHeight = barCodeHeight + HEIGHT_SPACE * 2;
BufferedImage img = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D) img.getGraphics();
g.fillRect(0, 0, imageWidth, imageHeight);
Font font = new java.awt.Font("", java.awt.Font.PLAIN, 12);
Barcode128 barcode128 = new Barcode128();
FontRenderContext fontRenderContext = g.getFontRenderContext();
// 条形码(文字)的高度
int stringHeight = (int) font.getStringBounds("", fontRenderContext).getHeight();
// 图片横坐标开始位置
int startX = barCodeWidth / 2;
// 图片纵坐标开始位置
int imageStartY = (imageHeight - barCodeHeight - stringHeight) / 2;
int stringStartY = imageStartY * 2 + barCodeHeight;// 条形码(文字)开始位置
for (String code : codeList) {
int codeWidth = (int) font.getStringBounds(code, fontRenderContext).getWidth();
barcodesetCode(code);
Image codeImg = barcodecreateAwtImage(Color.black, Color.white);
g.drawImage(codeImg, startX, imageStartY, barCodeWidth, barCodeHeight, Color.white, null);
// 为图片添加条形码(文字),位置为条形码图片的下部居中
AttributedString ats = new AttributedString(code);
ats.addAttribute(TextAttribute.FONT, font, 0, code.length());
AttributedCharacterIterator iter = ats.getIterator();
// 设置条形码(文字)的颜色为蓝色
g.setColor(Color.BLUE);
// 绘制条形码(文字)
g.drawString(iter, startX + (barCodeWidth - codeWidth) / 2, stringStartY);
// 更改图片横坐标开始位置,图片之间的空隙为条形码的宽度的一半
startX = startX + barCodeWidth / 2 + barCodeWidth;
}
g.dispose();
OutputStream os = new BufferedOutputStream(new FileOutputStream("/home/admin/codeList.png"));
ImageIO.write(img, "PNG", os);
}