使用incam可以很轻松的增加2维码,这里通过另外一种方式玩转二维码的加法,

使用谷歌zxing.dll类库实现,将文字信息转为bitmap点阵后,在Genesis绘制点即可。

一.incam增加二维码效果

二.通过代码增加方PAD实现效果:

三.代码实现:

Genesis增加二维码代码

        private void addQR()
{
CodeHelper qr = new CodeHelper();
Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();
hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");//设置内容编码
hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);//错码率 L水平 7 % M水平 15 % Q水平 25 % H水平 30 %
hint.Add(EncodeHintType.QR_VERSION, );//大小 (V-1)*4 + 21(V是版本号)
hint.Add(EncodeHintType.MARGIN, );//边距
ZXing.Common.BitMatrix codeArray = qr.enMatrix("at00101ca0", , , BarcodeFormat.QR_CODE, hint); //at00101ca0为增加二维码内容
add add_ = new add();
gPP gp = new gPP();
gp.width = ;//PAD大小
gp.symbols = "s";//PAD形状为方PAD
for (int x = ; x < codeArray.Width; x++)
{
for (int y = ; y < codeArray.Height; y++)
{
if (codeArray[x, y])
{
gp.p.x = x * 0.5;
gp.p.y = y * 0.5;
add_.pad(gp); //增加方PAD PAD
}
}
}
}

zxing.dll重新封装后的二维码类

 public class CodeHelper
{ public string CHARSET = "UTF-8"; public static int SaveTo(Bitmap bitmap, string filepath, string filename)
{
try
{
bitmap.Save(filepath + filename); return ;
}
catch (System.Exception ex)
{
return -;
}
}
/// <summary>
///字符转二维码
/// </summary>
/// <param name="content"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="barcodeFormat"></param>
/// <param name="hints"></param>
/// <returns></returns>
public Bitmap encode(string content, int width, int height, BarcodeFormat barcodeFormat, IDictionary<EncodeHintType, object> hints)
{
BitMatrix byteMatrix = new MultiFormatWriter().encode(content, barcodeFormat, width, height, hints);
Bitmap bitmap = toBitmap(byteMatrix);
return bitmap;
} /// <summary>
///字符转二维码
/// </summary>
/// <param name="content"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="barcodeFormat"></param>
/// <param name="hints"></param>
/// <returns></returns>
public string enString(string content, int width, int height, BarcodeFormat barcodeFormat, IDictionary<EncodeHintType, object> hints)
{
BitMatrix byteMatrix = new MultiFormatWriter().encode(content, barcodeFormat, width, height, hints);
return toString(byteMatrix);
}
/// <summary>
///字符转二维码
/// </summary>
/// <param name="content"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="barcodeFormat"></param>
/// <param name="hints"></param>
/// <returns></returns>
public BitMatrix enMatrix(string content, int width, int height, BarcodeFormat barcodeFormat, IDictionary<EncodeHintType, object> hints)
{
BitMatrix byteMatrix = new MultiFormatWriter().encode(content, barcodeFormat, width, height, hints);
return byteMatrix;
}
/// <summary>
/// 字符转二维码
/// </summary>
/// <param name="content"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="barcodeFormat"></param>
/// <returns></returns>
public Bitmap encode(string content, int width, int height, BarcodeFormat barcodeFormat)
{
BitMatrix byteMatrix = new MultiFormatWriter().encode(content, barcodeFormat, width, height); Bitmap bitmap = toBitmap(byteMatrix);
return bitmap;
}
/// <summary>
/// BitMatrix转Bitmap
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
private static String toString(BitMatrix matrix)
{
StringBuilder bitString = new StringBuilder(); for (int x = ; x < matrix.Width; x++)
{
bitString.Append("\r\n");
for (int y = ; y < matrix.Height; y++)
{
//bitmap.SetPixel(x, y, matrix[x, y] ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
bitString.Append(matrix[x, y] ? "■" : " ");
}
}
return bitString.ToString ();
}
/// <summary>
/// BitMatrix转Bitmap
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
private static Bitmap toBitmap(BitMatrix matrix)
{
int width = matrix.Width;
int height = matrix.Height;
Bitmap bitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); for (int x = ; x < width; x++)
{
for (int y = ; y < height; y++)
{
bitmap.SetPixel(x, y, matrix[x, y] ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
}
}
return bitmap;
} /// <summary>
/// 字符转二维码并保存
/// </summary>
/// <param name="content"></param>
/// <param name="path"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="barcodeFormat"></param>
/// <returns></returns>
public int encodeAndSave(string content, string path, int width, int height, BarcodeFormat barcodeFormat)
{
return SaveTo(encode(content, width, height, barcodeFormat), path, "");
}
/// <summary>
/// bmp图片路径转换??
/// </summary>
/// <param name="bmppath"></param>
/// <param name="hints"></param>
/// <param name="result"></param>
/// <returns></returns>
public static int decode(string bmppath, IDictionary<DecodeHintType, object> hints, out Result result)
{
Bitmap bmap = new Bitmap(bmppath);
BitmapLuminanceSource source = new BitmapLuminanceSource(bmap);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
result = new MultiFormatReader().decode(bitmap, hints);
return ;
}
}

PCB Genesis加二维码 实现方式的更多相关文章

  1. php生成二维码的几种方式整理及使用实例

    hp生成二维码的方式:1.google开放api:2.php类库PHP QR Code:3.libqrencode:4.QRcode Perl CGI & PHP scripts感兴趣的朋友可 ...

  2. php生成二维码的几种方式

    一些php生成二维码的方式:1.google开放api:2.php类库PHP QR Code:3.libqrencode:4.QRcode Perl CGI & PHP scripts 1.g ...

  3. 使用jquery.qrcode生成二维码实现微信分享功能

    前言: 最近有个这样的需求,在pc端的商品详情页增加分享功能. 微博分享.QQ好友分享.QQ空间分享这些都很常见.但是微信分享我还没有手动写过(以前改过). 最终效果如下图: 解决方案:使用jquer ...

  4. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  5. Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)

    一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...

  6. Java语言实现二维码的生成

    众所周知,现在生活中二维码已经是无处不见.走在街道上,随处可见广告标语旁有二维码,手机上QQ,微信加个好友都能通过二维码的方式,我不知道是什么时候兴起的二维码浪潮,但是我知道,这在我小时候可是见不到的 ...

  7. [C#]二维码(QR Code)生成与解析

    写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就扒了扒网络,发现关于解析二维码的类库 ...

  8. 二维码(QR Code)生成与解析

    二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就 ...

  9. java生成二维码(带logo)

    之前写过一篇不带logo的二维码实现方式,採用QRCode和ZXing两种方式 http://blog.csdn.net/xiaokui_wingfly/article/details/3947618 ...

随机推荐

  1. gtest ASSERT_TRUE和EXPECT_TRUE

    调用ASSERT_TRUE的函数,返回值类型定义必须是void,如果想返回别的类型,就用EXPECT_TRUE: void abc::fun() { ASSERT_TRUE(fun1()); } bo ...

  2. 在vue中通过js动态控制图片按比列缩放

    1.html 通过外层的div来给img对应的class,隐藏的img是得到img图片请求回来时的原始尺寸.外层div是固定大小,因此,图片有两种情况去适应外部div的尺寸.一种是宽度大于高度的情况, ...

  3. ceph部署

    一.部署准备: 准备5台机器(linux系统为centos7.6版本),当然也可以至少3台机器并充当部署节点和客户端,可以与ceph节点共用:     1台部署节点(配一块硬盘,运行ceph-depo ...

  4. 使用Scrapy爬取图书网站信息

    重难点:使用scrapy获取的数值是unicode类型,保存到json文件时需要特别注意处理一下,具体请参考链接:https://www.cnblogs.com/sanduzxcvbnm/p/1030 ...

  5. Problem 21

    Problem 21 https://projecteuler.net/problem=21 Let d(n) be defined as the sum of proper divisors of  ...

  6. PAT 1098. Insertion or Heap Sort

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  7. unigui的菜单树补习【2】treeview

    Treeview用于显示按照树形结构进行组织的数据.           Treeview控件中一个树形图由节点(TreeNode)和连接线组成.TtreeNode是TTreeview的基本组成单元. ...

  8. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景

    什么是css? 通配符选择器 <head> /* *通配符选择器 匹配任何元素 */ *{ margin: 0; padding: 0; } </head> css样式有三种 ...

  9. Redis学习总结(2)——Java使用Redis

    安装 开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. Java的安装配置可以参考我们的 Java ...

  10. PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数

    PL/SQL Challenge 每日一题:2014-3-14 11gR2中带RELIES_ON子句的RESULT_CACHE函数 最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可 ...