java生成条码并解析条码

package com.lyy.util;

import java.awt.Frame;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code128Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.encode.EAN8Encoder;
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.encode.UPCAEncoder;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.EAN8TextPainter;
import org.jbarcode.paint.UPCATextPainter;
import org.jbarcode.paint.WidthCodedPainter;
import org.jbarcode.util.ImageUtil;

import com.google.zxing.BinaryBitmap;
import com.google.zxing.BlackPointEstimationMethod;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MonochromeBitmapSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BaseMonochromeBitmapSource;
import com.google.zxing.common.BitArray;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
/**
 * 利用jbarcode生成各种条形码!
 * 利用zxing解析生成的条码
 * @author lyy
 * 
 */
public class BarcodeUtil {
    //生成EAN8条码
	public static void build8barcode(){
		JBarcode jBarcode = new JBarcode(EAN8Encoder.getInstance(),
				WidthCodedPainter.getInstance(), EAN8TextPainter.getInstance());
		String str = "5201314";
		BufferedImage bufferedImage = null;
		try {
			bufferedImage = jBarcode.createBarcode(str);

			FileOutputStream fileOutputStream = new FileOutputStream("F:"
					+ File.separator + "file_util" + File.separator
					+ "test.jpg");
			ImageUtil.encodeAndWrite(bufferedImage, "jpeg", fileOutputStream);
			System.out.println("ok");
			fileOutputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    //生成EAN13条码
	public static void build13barcode(){
		JBarcode jBarcode=new  JBarcode(EAN13Encoder.getInstance(),
				WidthCodedPainter.getInstance(), EAN13TextPainter.getInstance());
		String str = "110802141314";
		System.out.println(str);
		BufferedImage bufferedImage = null;
		try {
			bufferedImage = jBarcode.createBarcode(str);

			FileOutputStream fileOutputStream = new FileOutputStream("F:"
					+ File.separator + "file_util" + File.separator
					+ "test13.jpg");
			ImageUtil.encodeAndWrite(bufferedImage, "jpeg", fileOutputStream);
			System.out.println("ok");
			fileOutputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    //解析条码
	public static void parseBarcode(){
		Reader reader=new MultiFormatReader();
		String filename="F:"+ File.separator + "file_util" + File.separator
				+ "test.jpg";
		Image image= Toolkit.getDefaultToolkit().getImage(filename);
		
		MediaTracker mediaTracker=new MediaTracker(new Frame());
		mediaTracker.addImage(image, 0);
		BufferedImage bufferedImage=null;
		try {
			mediaTracker.waitForID(0);
			bufferedImage=new BufferedImage(image.getWidth(null),image.getHeight(null), BufferedImage.TYPE_INT_BGR);
			bufferedImage.createGraphics().drawImage(image,0,0,null);;
			LuminanceSource source=new BufferedImageLuminanceSource(bufferedImage);
			BinaryBitmap binaryBitmap= new BinaryBitmap(new HybridBinarizer(source));
			Result result=reader.decode(binaryBitmap);
			System.out.println("解析得到的条码值为:"+result.getText());
		} catch (InterruptedException | NotFoundException | ChecksumException | FormatException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		build8barcode();
		build13barcode();
		 parseBarcode();
	}
}









 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒曰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值