ZXing,JBarcodeBean 生成条形码 并拼接图片

原创
2015/12/16 20:27
阅读数 1.9K

由于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;
	}


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
8 收藏
0
分享
返回顶部
顶部