asp.net 生成二维码代码支持中英文

 asp.net 生成二维码代码:


           其实呢csdn上面有很多的,甚至连整个项目都有。那么我为什么要在写呢呵呵,可能只是觉得可能有像我这样需求的人,但是要不想在去弄的,或者知道弄却不想去查。

 其实我也是用   “ThoughtWorks.QRCode.dll”这个去生成了,因为生成的二维码图片边框太窄发送到客户手机pos设备无法读取。 所以后面就放弃用 “ThoughtWorks.QRCode.dll” 用了谷歌的外网的的连接生成了,发现生成的图片很正规。本想着完成了任务了,可是突然想要是服务器无法上网呢?  这才想在用回 “ThoughtWorks.QRCode.dll” 组件生成(没有办法本人懒不想在查其他的)。所以在生成出来的图片加了边框就好了!至于ThoughtWorks.QRCode.dll 这个控件,网上应该有下载把!代码如下:



/// 生成二维码(利用dll)
    /// </summary>
    /// <param name="data">生成二维码数据</param>

 /// <param name="filename">图片名称</param>
    private void createcode(string data,string filename)
    {
        //Image1.ImageUrl = "Qcodeimage.aspx?strs="+data;


        
        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
        qrCodeEncoder.QRCodeScale = 3;
       
        qrCodeEncoder.QRCodeVersion = 8;
        qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
        
        //String data = "12345678abcdeftlljws#你好";
        System.Drawing.Bitmap image = qrCodeEncoder.Encode(data);


        System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(image.Width + 30, image.Height + 30);//这里是背景图片
        //bmp.SetPixel(0, 0, Color.White);






        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);
        g.Clear(Color.White);//把背景图片换成白色


        g.DrawImage(image, new Rectangle(15, 15, image.Width+5, image.Height+5), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);//Rectangle为 15距离顶部和 15左边的距离。
          
        System.IO.MemoryStream MStream = new System.IO.MemoryStream();
        bmp.Save(MStream, System.Drawing.Imaging.ImageFormat.Gif);
        //為了callBack而callBack的寫法
        System.Drawing.Image.GetThumbnailImageAbort callBack =
             new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
        // 計算維持比例的縮圖大小
        int[] thumbnailScale = this.getThumbPic_WidthAndHeight(bmp, 300);
        // 產生縮圖
        System.Drawing.Image smallImage =
        bmp.GetThumbnailImage(thumbnailScale[0], thumbnailScale[1], callBack, IntPtr.Zero);


        Byte[] imgbyte = MStream.ToArray();//这个就是将图片转换为二进制数据,然后就可以通过socket发送了


        if (Common.DirExists("Qcode"))//这个是检查目录是否存在这个方法我另一个文件中  这里不贴出
        {
            string filepath = Server.MapPath("Qcode");

            smallImage.Save(filepath + "\\" + filename, System.Drawing.Imaging.ImageFormat.Jpeg);



        }


    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值