博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成带内嵌图片的二维码
阅读量:7064 次
发布时间:2019-06-28

本文共 2377 字,大约阅读时间需要 7 分钟。

在博问上看到有同学在问如何实现一个带内嵌图片的二维码,所以准备记录下来,供同学们参考。

 

1、首先准备一个用于内嵌的图片。

2、既然生成二维码码,那肯定需要将什么样的内容生成二维码,这里我用http://www.baidu.com作为生成二维码的字符串

private string QcodeSource        {            get            {                return "http://www.baidu.com";            }        }

3、我们来看看根据QcodeSource生成二维码的方法,这里返回Byte[]。PS:这里用了  生成二维码的库,点击链接下载

public static byte[] GetQrCodeBitmapImage(string qrcode)        {            try            {                if (string.IsNullOrWhiteSpace(qrcode)) return null;                // Get QrCode GraphicsRenderer                var qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);                var qrCode = qrEncoder.Encode(qrcode);                var renderer = new GraphicsRenderer(new FixedModuleSize(24, QuietZoneModules.Four), Brushes.Black, Brushes.White);                using (var stream = new MemoryStream())                {                    renderer.WriteToStream(qrCode.Matrix, ImageFormat.Jpeg, stream);                    stream.Seek(0, SeekOrigin.Begin);                    stream.Flush();                    return stream.ToArray();                }            }            catch (Exception)            {                return null;            }        }

4、既然上面返回了图片的Byte[],所以接下来我们把准备内嵌的图片和这个二维码图片拼成一个图片,如何将内嵌图片编程Byte[]这里不做熬述。

///           /// 调用此函数后使此两种图片合并,类似相册,有个          /// 背景图,中间贴自己的目标图片          ///           /// 粘贴的源图片          /// 粘贴的目标图片          public static Bitmap CombinImage(Bitmap sourceImage, Bitmap destBitmap)        {            if (destBitmap.Height != 250 || destBitmap.Width != 250)            {                destBitmap = KiResizeImage(destBitmap, 250, 250, 0);            }            using (var g = Graphics.FromImage(sourceImage))            {                //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);                 g.DrawImage(sourceImage, 0, 0, sourceImage.Width, sourceImage.Height);                //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框                  g.DrawImage(destBitmap, sourceImage.Width / 2 - destBitmap.Width / 2, sourceImage.Width / 2 - destBitmap.Width / 2, destBitmap.Width, destBitmap.Height);                GC.Collect();                return sourceImage;            }        }

5、下面上效果图

 

总结:生成结束,主要用了 这个库,代码还是相对来讲比较简单的。

 

转载于:https://www.cnblogs.com/yangtongnet/p/3928813.html

你可能感兴趣的文章
IOS面试题(一)
查看>>
spring框架学习(五)注解
查看>>
mysql 查询缓存配置和查看
查看>>
水王(课堂作业)
查看>>
linux 新添加的硬盘格式化并挂载到目录下
查看>>
学习指引
查看>>
CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds
查看>>
JAVA入门学习: 方法参数的传递(函数传参问题)
查看>>
补第一阶段冲刺站立会议7(应发表日期5月19日)
查看>>
【剑指offer】08二叉树的下一个节点,C++实现
查看>>
局域网络ping不通
查看>>
面向对象如何编写
查看>>
「视频直播技术详解」系列之二:处理
查看>>
zw版【转发·台湾nvp系列Delphi例程】HALCON SetLineStyle1
查看>>
Bzoj4710 [Jsoi2011]分特产
查看>>
pat甲级题目1001 A+B Format详解
查看>>
电话拨号示例
查看>>
day12-迭代器
查看>>
HTML5 <script>元素async,defer异步加载
查看>>
poj2299--归并排序求解逆序对
查看>>