c# 仿微信二维码生成二维码中间显示头像

 

 

/// <summary>
        /// 生成二维码.
        /// </summary>
        /// <param name="data">需要添加进去的文本</param>
        /// <returns></returns>
        public System.Drawing.Image GCode(String data)
        {
            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;


            qrCodeEncoder.QRCodeScale = 5;
            qrCodeEncoder.QRCodeVersion = 7;


            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
            var pbImg = qrCodeEncoder.Encode(data, System.Text.Encoding.UTF8);
            var width = pbImg.Width / 10;
            var dwidth = width * 2;
            Bitmap bmp = new Bitmap(pbImg.Width + dwidth, pbImg.Height + dwidth);
            Graphics g = Graphics.FromImage(bmp);
            var c = System.Drawing.Color.White;
            g.FillRectangle(new SolidBrush(c), 0, 0, pbImg.Width + dwidth, pbImg.Height + dwidth);
            g.DrawImage(pbImg, width, width);
            g.Dispose();
            return bmp;
        }


        /// <summary>
        /// 调用此函数后使此两种图片合并,类似相册,有个
        /// 背景图,中间贴自己的目标图片
        /// </summary>
        /// <param name="sourceImg">粘贴的源图片</param>
        /// <param name="destImg">粘贴的目标图片</param>
        public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack, string destImg)
        {


            System.Drawing.Image img = System.Drawing.Image.FromFile(destImg);        //照片图片  
            if (img.Height != 50 || img.Width != 50) {
                img = KiResizeImage(img, 50, 50, 0);
            }
            Graphics g = Graphics.FromImage(imgBack);


            g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);      //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高); 


            //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框


            //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);


            g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2 , img.Width, img.Height);
            GC.Collect();
            return imgBack;
        }


        /// <summary>
        /// Resize图片
        /// </summary>
        /// <param name="bmp">原始Bitmap</param>
        /// <param name="newW">新的宽度</param>
        /// <param name="newH">新的高度</param>
        /// <param name="Mode">保留着,暂时未用</param>
        /// <returns>处理以后的图片</returns>
        public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)
        {
            try
            {
                System.Drawing.Image b = new Bitmap(newW, newH);
                Graphics g = Graphics.FromImage(b);
 
                // 插值算法的质量
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;


                g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
                g.Dispose();


                return b;
            }
            catch
            {
                return null;
            }

        }


 


 

调用
CombinImage(GCode(Text), linkpath).Save(SavePath);


 


转载地址:http://blog.csdn.net/fuweiping/article/details/8117602

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenCvSharp微信二维码引擎Demo是一个基于OpenCvSharp库开发的针对微信二维码识别的示例程序。微信二维码引擎是指能够识别微信扫一扫功能中的二维码的引擎。下面我将对这个Demo进行简要介绍。 首先,这个Demo使用了OpenCvSharp库,该库是OpenCV的C#封装,能够方便地在C#中使用OpenCV的功能。由于微信二维码引擎是基于图像识别的,OpenCV提供了强大的图像处理和计算机视觉功能,因此选择OpenCvSharp作为开发工具十分合适。 这个Demo主要实现了微信二维码的识别功能。在使用之前,首先需要安装OpenCvSharp库,并完成相关的配置。然后,我们可以通过该Demo将微信二维码图片加载进来,使用OpenCvSharp库提供的图像处理方法进行处理和分析。 在识别过程中,Demo会利用OpenCvSharp库中的二维码识别算法来检测和解码图像中的二维码。通过对二维码的解码,我们可以获取到其中存储的信息,比如链接、文本等。 最后,Demo会将识别出的二维码信息以文本的形式输出,方便用户查看和使用。此外,我们还可以根据需要进行二维码的进一步处理,比如裁剪、旋转等。 总之,OpenCvSharp微信二维码引擎Demo是一个基于OpenCvSharp库开发的示例程序,能够实现微信二维码的识别功能。通过使用这个Demo,我们可以了解和学习如何使用OpenCvSharp库进行微信二维码的识别,从而为后续的二维码应用开发提供了基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值