BarcodeUtil.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.kmall.admin.utils.pdf;
  2. import org.apache.commons.lang3.ObjectUtils;
  3. import org.krysalis.barcode4j.HumanReadablePlacement;
  4. import org.krysalis.barcode4j.impl.code128.Code128Bean;
  5. import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
  6. import javax.imageio.stream.FileImageOutputStream;
  7. import java.awt.image.BufferedImage;
  8. import java.io.ByteArrayOutputStream;
  9. import java.io.File;
  10. import java.io.IOException;
  11. public class BarcodeUtil {
  12. /**
  13. * 生成code128条形码
  14. *
  15. * @param height 条形码的高度
  16. * @param width 条形码的宽度
  17. * @param message 要生成的文本
  18. * @param withQuietZone 是否两边留白
  19. * @param hideText 隐藏可读文本
  20. * @return 图片对应的字节码
  21. */
  22. public static byte[] generateBarCode128(String message, Double height, Double width, boolean withQuietZone, boolean hideText) {
  23. Code128Bean bean = new Code128Bean();
  24. // 分辨率
  25. int dpi = 512;
  26. // 设置两侧是否留白
  27. bean.doQuietZone(withQuietZone);
  28. // 设置条形码高度和宽度
  29. bean.setBarHeight((double) ObjectUtils.defaultIfNull(height, 9.0D));
  30. if (width != null) {
  31. bean.setModuleWidth(width);
  32. }
  33. // 设置文本位置(包括是否显示)
  34. if (hideText) {
  35. bean.setMsgPosition(HumanReadablePlacement.HRP_NONE);
  36. }
  37. // 设置图片类型
  38. String format = "image/png";
  39. ByteArrayOutputStream ous = new ByteArrayOutputStream();
  40. BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,
  41. BufferedImage.TYPE_BYTE_BINARY, false, 0);
  42. // 生产条形码
  43. bean.generateBarcode(canvas, message);
  44. try {
  45. canvas.finish();
  46. } catch (IOException e) {
  47. //ByteArrayOutputStream won't happen
  48. }
  49. return ous.toByteArray();
  50. }
  51. //byte数组到图片到硬盘上
  52. public static void byte2image(byte[] data, String path){
  53. if(data.length<3||path.equals("")) return;//判断输入的byte是否为空
  54. try{
  55. FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));//打开输入流
  56. imageOutput.write(data, 0, data.length);//将byte写入硬盘
  57. imageOutput.close();
  58. System.out.println("Make Picture success,Please find image in " + path);
  59. } catch(Exception ex) {
  60. System.out.println("Exception: " + ex);
  61. ex.printStackTrace();
  62. }
  63. }
  64. }