45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:通过asp.net使用QRCode生成图片中心加Logo或图像的二维码的步骤

通过asp.net使用QRCode生成图片中心加Logo或图像的二维码的步骤

2016-09-21 15:53:51 来源:www.45fan.com 【

通过asp.net使用QRCode生成图片中心加Logo或图像的二维码的步骤

本文实例讲述了asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码。分享给大家供大家参考,具体如下:

<%@ WebHandler Language="C#" Class="GetQRCode" %>
using System;
using System.Web;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;
using System.IO;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
public class GetQRCode : IHttpHandler
{
 public void ProcessRequest(HttpContext context)
 {
  String data = context.Request["CodeText"];
  if (!string.IsNullOrEmpty(data))
  {
   QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
   qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
   qrCodeEncoder.QRCodeScale = 4;
   qrCodeEncoder.QRCodeVersion = 8;
   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
   System.Drawing.Image image = qrCodeEncoder.Encode(data);
   System.IO.MemoryStream MStream = new System.IO.MemoryStream();
   image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
   System.IO.MemoryStream MStream1 = new System.IO.MemoryStream();
   CombinImage(image, context.Server.MapPath("~/images/201292891051540.jpg")).Save(MStream1, System.Drawing.Imaging.ImageFormat.Png);
   context.Response.ClearContent();
   context.Response.ContentType = "image/png";
   context.Response.BinaryWrite(MStream1.ToArray());
   //image.Dispose();
   MStream.Dispose();
   MStream1.Dispose();
  }
  context.Response.Flush();
  context.Response.End();
 }
 /// <summary>
 /// 调用此函数后使此两种图片合并,类似相册,有个
 /// 背景图,中间贴自己的目标图片
 /// </summary>
 /// <param name="imgBack">粘贴的源图片</param>
 /// <param name="destImg">粘贴的目标图片</param>
 public static Image CombinImage(Image imgBack, string destImg)
 {
  Image img = Image.FromFile(destImg);  //照片图片
  if (img.Height != 65 || img.Width != 65)
  {
   img = KiResizeImage(img, 65, 65, 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 Image KiResizeImage(Image bmp, int newW, int newH, int Mode)
 {
  try
  {
   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;
  }
 }
 public bool IsReusable
 {
  get
  {
   return false;
  }
 }
}

运行效果如下图所示:

通过asp.net使用QRCode生成图片中心加Logo或图像的二维码的步骤

PS:本站还提供了一个功能十分强悍的在线二维码生成工具,可实现文本、电话号码、短信、邮件、网址等的二维码生成及logo图标添加功能:

在线生成二维码工具(加强版):
http://tools.jb51.net/transcoding/jb51qrcode

希望本文所述对大家asp.net程序设计有所帮助。


本文地址:http://www.45fan.com/bcdm/75403.html
Tags: 生成 ASP.NET QRCode
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部