随手记一次利用开源zxing生成带嵌入logo的二维码图片
之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码
接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的zxing.dll.另外准备了一张准备嵌入的图片,代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using ZXing;
using ZXing.QrCode.Internal;
using ZXing.Common;
using ZXing.Datamatrix;
using System.IO;
using ZXing.Rendering;
using ZXing.QrCode; namespace UsezxingCreateQRcode.Models
{
public class CreateQrCode
{
public static byte[] GetQrCodeByZXing(string msg, string logo)
{ //构造二维码写码器
QRCodeWriter qrwriter = new QRCodeWriter();
IDictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();
hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 容错级别
hints.Add(EncodeHintType.MARGIN, );//二维码留白边距
BarcodeWriter bw = new BarcodeWriter();
BitMatrix bm = qrwriter.encode(msg, BarcodeFormat.QR_CODE, , , hints);
Bitmap img = bw.Write(bm);
//获取logo
Image logoImage = Image.FromFile(logo);
//计算插入图片的大小和位置,并计算logo占整个二维码图片的比例
//根据实际需求可自定义logo所占比例
int logoImageW = Math.Min((int)(img.Size.Width / ), logoImage.Width);
int logoImageH = Math.Min((int)(img.Size.Height / ), logoImage.Height); int logoImageX = (img.Width - logoImageW) / ;
int logoImageY = (img.Height - logoImageH) / ; //将img转换成bmp格式,并创建 Graphics对象
Bitmap bmpimg = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmpimg))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.DrawImage(img, , );
} //在二维码中插入图片
System.Drawing.Graphics MyGraphic = System.Drawing.Graphics.FromImage(bmpimg);
//白底
MyGraphic.FillRectangle(Brushes.White, logoImageX, logoImageY, logoImageW, logoImageH);
MyGraphic.DrawImage(logoImage, logoImageX, logoImageY, logoImageW, logoImageH); //嵌入logo
MemoryStream ms = new MemoryStream();
bmpimg.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buffur = ms.ToArray();
ms.Dispose();
return buffur;
}
}
}
使用以上方法,举例如下:
public ActionResult CreateQrCode()
{
string logo = AppDomain.CurrentDomain.BaseDirectory + "Images\\cloud.jpg";
ViewBag.img = "data:image/Jpeg;base64," + Convert.ToBase64String(UsezxingCreateQRcode.Models.CreateQrCode.GetQrCodeByZXing("NO070133333", logo));
return View();
}
........时间不早了,上一个效果图吧:

随手记一次利用开源zxing生成带嵌入logo的二维码图片的更多相关文章
- C# 生成中间含有LOGO的二维码
效果如下: 1.无LOGO的二维码: 2.含有LOGO的二维码: 一.下载QrCode程序集: 使用的程序集有: 下载地址: http://zxingnet.codeplex.com/ 二.QRCod ...
- phpqrcode生成带logo的二维码图片及带文字的二维码图片
<?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...
- 使用javascript生成当前博文地址的二维码图片
前面的话 在电脑端发现一篇好的博文,想在手机上访问.这时,就必须打开手机浏览器输入长长的URL地址才行,非常不方便.如果在博客标题的后面跟一张小的图片,点击该图片后,出现一张二维码的大图,然后再通过手 ...
- phpqrcode生成带logo的二维码图片
<?php //include_once('lib/QrReader.php'); //$qrcode = new QrReader('201708211144474410.jpg'); //图 ...
- 生成一张带有logo的二维码图片
string url = 二维码内容; , , Encoding.UTF8); // 合成活动的LOGO图片 var hasImage = GlobalTools.GetCommonContent(& ...
- Java使用ZXing生成/解析二维码图片
ZXing是一种开源的多格式1D/2D条形码图像处理库,在Java中的实现.重点是在手机上使用内置摄像头来扫描和解码设备上的条码,而不与服务器通信.然而,该项目也可以用于对桌面和服务器上的条形码进行编 ...
- (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...
- java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字
前段时间因为工作需要,要实现将一段文字或者url生成二维码,然后中间附上logo,下方正中间附上文字的功能. 上网找了几篇教程学习了下,由于没有保存借鉴的博文链接,所以就没po上参考文章的链接啦,感谢 ...
- java生成二维码,读取(解析)二维码图片
二维码分为好多种,我们最常用的是qrcode类型的二维码,以下有三种生成方式以及解析方式: 附所需jar包或者js地址 第一种:依赖qrcode.jar import java.awt.Color; ...
随机推荐
- iOS开发代码规范(通用)
1. 关于命名 1> 统一要求 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释 使用全称,不适用缩写 2> 类的命名 大驼峰式命名:每个单词的首字母都采用大写字母 例子:M ...
- input type=checkbox checked disabled
input type=checkbox checked disabled 禁用无法提交!
- Android 读取蓝牙设备信息开发
(1)Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流程是: 1.使用registerReceiver注册BroadcastReceiver来获取蓝牙状态 ...
- Linux 获取设备树源文件(DTS)里描述的资源
Linux 获取设备树源文件(DTS)里的资源 韩大卫@吉林师范大学 在linux使用platform_driver_register() 注册 platform_driver 时, 需要在 plat ...
- Java EE 学习总结
1.Java EE WEB 工程项目文件结构 组成:静态HTML页.Servlet.JSP和其他相关的class: 每个组件在WEB应用中都有固定的存放目录. WEB应用的配置信息存放在web.xml ...
- nodejs获取当前url和url参数值
//需要使用的模块 http url 当前url http://localhost:8888/select?aa=001&bb=002 var http = require('http ...
- js 原生 ajax 异步上传图片
<script type="text/javascript"> function upload() { var file1 = document.getElementB ...
- 谷歌浏览器安装adblock广告屏蔽插件
访问不到google的应用商店的话,就从网上直接查找adblock for chrome.打开浏览器的开发者模式,下载解压后直接拖拽到浏览器即可.下载地址http://www.cr173.com/so ...
- linux笔记三-------根目录相关说明
1. /bin binary二进制文件,可执行程序文件 ls su pwd cd 内部文件是一些指令信息 2. /sbin super bin ...
- HTML5初学篇章_3
表单的标签是<form>,它使页面与客户的互动成为可能.而它的大部分元素字自HTML2.0后就没有再改变过,由此可见这是一个多么具有卓越性的设计. <form>标签是用于创建供 ...