使用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. 三角形状的点阵模糊效果iOS源码

    源码FFAngularPointilism,FFAngularPointilism能够将UIImageView像添加滤波器一样生成三角形状的点阵模糊效果.可以通过动画方式来模糊,也可以立刻模糊.另外并 ...

  2. select2下拉插件

    下拉单选: 1.行内 1)初始化数据: <select class="form-control select5"> <option selected>张三1 ...

  3. S3C2440时钟体系

    注:以下内容学习于韦东山老师arm裸机第一期视频教程 一. 2440时钟简介 1.1 2440是一个SOC(system on chip)系统,不仅有很多CPU,还有很多外设,在2440芯片手册有系统 ...

  4. 惊了!!! 小白零基础学java (月薪过万是你的梦想嘛) 手把手教学 就怕你不动手【二十五】第二章【初识MySQL】

    初识MySQL1. 了解主流的数据库和数据库分类1.1 数据库概念数据库:按照数据结构来组织.存储和管理数据的一种建立在计算机存储设备上的仓库. 数据库的优势: 1. 可以持久化存储大量的数据.方便我 ...

  5. VMware虚拟机下Ubuntu安装VMware Tools详解

    一.安装步骤 1.开启虚拟机,运行想要安装VMware Tools的系统,运行进入系统后,点击虚拟机上方菜单栏的“虚拟机(M)”->点击“安装 VMware Tools”,图片所示是因为我已经安 ...

  6. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...

  7. linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号

    linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...

  8. 使用Python PIL库中的Image.thumbnail函数裁剪图片

    今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...

  9. pandas - 案例(美国各州人口普查)

    需求: 导入文件,查看原始数据 将人口数据和各州简称数据进行合并 将合并的数据中重复的abbreviation列进行删除 查看存在缺失数据的列 找到有哪些state/region使得state的值为N ...

  10. 《AlwaysRun!》第八次团队作业:Alpha冲刺 第二天

    项目 内容 这个作业属于哪个课程  老师链接 这个作业的要求在哪里  实验十二 团队作业8:软件测试与Alpha冲刺 团队名称  Always Run! 作业学习目标 (1)掌握软件测试基础技术. ( ...