none
c# 利用ZXing 生成条码的疑问 RRS feed

  • 问题

  • 公司有个小软件,是用来专门生成一维码的,现在由于需求变更,所以想改软件,但是由于该软件很早就买了,已经找不到以前开发人员了,所以只能自己开发一个打印一维码的小软件。  
    后来在网上找到了 ZXing的方法,
    然后照着例子自己动手做了个小程序。打印出来的标签外观看上去没什么问题, 以为一维码出来了,就搞定了,但是用扫码抢扫的时候,发现灵敏度太低了,必须扫码抢距离标签纸很低才能扫到,如果远一点都完全扫不上,但是旧软件打印出来的一维码,你远一点扫都是完全没有问题,而且其灵敏度非常高。
      于是我留意了一下两个一维码的区别,发现旧软件打印出来的条码跟自己的条码有点不一样,我打印出来的标签所有黑线都比旧标签的所有黑线都是按相同比例给放大了,我用的是code128,他应该也是code128。 但是我不知道 ZXing 有没有可以调节线条粗细的比例的方法。
      

      有人建议我用zbar,但是网上很少有c# 的zbar用法。。不知道大家有没有这块的资料给我参考一下


    ^_^

    2014年10月26日 2:59

答案

  • 楼主 你好,

    如果需要修改Barcode的线条粗细,可以通过修改下面的属性来实现,默认情况下:

    	private void btnGenerate_Click(object sender, EventArgs e)
    	{
    		string barcode = this.txtBarcodeInput.Text;
    
    		var writer = new BarcodeWriter() { Format = BarcodeFormat.CODE_128 };
    
    		var bitmap = writer.Write(barcode);
    		this.picBarcode.Image = bitmap;
    	}

    效果:

    修改后:

    	private void btnGenerate_Click(object sender, EventArgs e)
    	{
    		string barcode = this.txtBarcodeInput.Text;
    
    		EncodingOptions options = new EncodingOptions();
    		options.Height = 100;
    		options.Width = 280;
    
    		var writer = new BarcodeWriter() { Format = BarcodeFormat.CODE_128,Options = options };
    
    		var bitmap = writer.Write(barcode);
    		this.picBarcode.Image = bitmap;
    	}

    效果:

    记得引入: ZXing.Common 名称空间.

    希望我的答案能够帮到你。

    谢谢!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年10月27日 2:46
    版主