ZXing,JBarcodeBean 生成条形码 并拼接图片
jopen
9年前
由于JBarcodeBean 和JBarcode maven库里资源很少,然后改为ZXing 生成条形码
public static void getJabCode(String code) throws IOException, WriterException{ int width = 200, height = 100; code="301010025000001877,301010025000001878"; String[] args=code.split("\\,"); ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); BufferedImage imageNew1 = new BufferedImage(width, height*args.length , BufferedImage.TYPE_INT_RGB); for(int i=0;i<args.length;i++){ BitMatrix bitMatrix = new MultiFormatWriter().encode(args[i], BarcodeFormat.CODE_128, width, height, null); BufferedImage tempimg = toBufferedImage(bitMatrix); int[] ImageArrayOne1 = new int[width * height]; ImageArrayOne1 = tempimg.getRGB(0, 0, width, height-10, ImageArrayOne1, 0, width); imageNew1.setRGB(0, 100*i, width, height-20, ImageArrayOne1, 0, width); MatrixToImageWriter .writeToFile(bitMatrix, "png", new File("d:/test/zxing_01.png")); MatrixToImageWriter.writeToStream(bitMatrix, "png", byteOutputStream); } ImageIO.write(imageNew1, "png", new File("d:/test/zxing_03.png")); }
查了好多博客 好多都用的 EAN8/EAN13/Code39 后来发现生成的条形码都不能把 数字显示完成 就改为了code128
JBarcodeBean jBarcodeBean = new JBarcodeBean(); jBarcodeBean.setCodeType(new Code128()); jBarcodeBean.setCode("301010025000001877"); BufferedImage img1 = new BufferedImage(300, 100, BufferedImage.TYPE_INT_RGB); img1 = jBarcodeBean.draw(img1); saveToPNG(img1, "4.png");
static void saveToJPEG(BufferedImage paramBufferedImage, String paramString) { saveToFile(paramBufferedImage, paramString, "jpeg"); } static void saveToFile(BufferedImage paramBufferedImage, String paramString1, String paramString2) { try { FileOutputStream localFileOutputStream = new FileOutputStream( "d:/test/" + paramString1); ImageUtil.encodeAndWrite(paramBufferedImage, paramString2, localFileOutputStream, 100, 100); localFileOutputStream.close(); } catch (Exception localException) { localException.printStackTrace(); } }
因为有需要把生成的条形码 拼接在一个图片里 保存
public byte[] getJabCode(String code) throws IOException{ //String code="301010025000001877,301010025000001878"; String[] args=code.split("\\,"); JBarcodeBean jBarcodeBean = new JBarcodeBean(); jBarcodeBean.setLabelPosition(JBarcodeBean.LABEL_BOTTOM); // 条形码类型 jBarcodeBean.setCodeType(new Code128()); // jBarcodeBean.setCodeType(new Code39()); //jBarcodeBean1.setLabelPosition(JBarcodeBean.LABEL_BOTTOM); int width1=200; int height1 =100; BufferedImage imageNew1 = new BufferedImage(width1, height1*args.length , BufferedImage.TYPE_INT_RGB); for(int i=0;i<args.length;i++){ jBarcodeBean.setCode(args[i]); BufferedImage tempimg = new BufferedImage(width1, height1, BufferedImage.TYPE_INT_RGB); tempimg = jBarcodeBean.draw(tempimg); int[] ImageArrayOne1 = new int[width1 * height1]; ImageArrayOne1 = tempimg.getRGB(0, 0, width1, height1, ImageArrayOne1, 0, width1); imageNew1.setRGB(0, 100*i, width1, height1, ImageArrayOne1, 0, width1); } ByteArrayOutputStream out = new ByteArrayOutputStream(); boolean flag = ImageIO.write(imageNew1, "gif", out); byte[] b = out.toByteArray(); //saveToPNG(imageNew1, "imageNew1.png"); return b; }