asp.net(C#)利用QRCode生成二维码(续)

1<%@ WebHandler Language="C#" Class="GetQRCode" %> 2 3using System; 4using System.Web; 5 6using ThoughtWorks.QRCode.Codec; 7using ThoughtWorks.QRCode.Codec.Data; 8using ThoughtWorks.QRCode.Codec.Util; 9using System.IO; 10using System.Text; 11using System.Drawing; 12using System.Drawing.Drawing2D; 13 14public class GetQRCode : IHttpHandler 15{ 16 17 public void ProcessRequest(HttpContext context) 18 { 19 20 String data = context.Request["CodeText"]; 21 if (!string.IsNullOrEmpty(data)) 22 { 23 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); 24 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; 25 qrCodeEncoder.QRCodeScale = 4; 26 qrCodeEncoder.QRCodeVersion = 8; 27 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; 28 System.Drawing.Image image = qrCodeEncoder.Encode(data); 29 System.IO.MemoryStream MStream = new System.IO.MemoryStream(); 30 image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png); 31 32 System.IO.MemoryStream MStream1 = new System.IO.MemoryStream(); 33 CombinImage(image, context.Server.MapPath("~/images/201292891051540.jpg")).Save(MStream1, System.Drawing.Imaging.ImageFormat.Png); 34 context.Response.ClearContent(); 35 context.Response.ContentType = "image/png"; 36 context.Response.BinaryWrite(MStream1.ToArray()); 37 38 //image.Dispose(); 39 MStream.Dispose(); 40 MStream1.Dispose(); 41 } 42 43 context.Response.Flush(); 44 context.Response.End(); 45 } 46 47 /// <summary> 48 /// 调用此函数后使此两种图片合并,类似相册,有个 49 /// 背景图,中间贴自己的目标图片 50 /// </summary> 51 /// <param name="imgBack">粘贴的源图片</param> 52 /// <param name="destImg">粘贴的目标图片</param> 53 public static Image CombinImage(Image imgBack, string destImg) 54 { 55 Image img = Image.FromFile(destImg); //照片图片 56 if (img.Height != 65 || img.Width != 65) 57 { 58 img = KiResizeImage(img, 65, 65, 0); 59 } 60 Graphics g = Graphics.FromImage(imgBack); 61 62 g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height); //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高); 63 64 //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框 65 66 //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高); 67 68 g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2, img.Width, img.Height); 69 GC.Collect(); 70 return imgBack; 71 } 72 73 74 /// <summary> 75 /// Resize图片 76 /// </summary> 77 /// <param name="bmp">原始Bitmap</param> 78 /// <param name="newW">新的宽度</param> 79 /// <param name="newH">新的高度</param> 80 /// <param name="Mode">保留着,暂时未用</param> 81 /// <returns>处理以后的图片</returns> 82 public static Image KiResizeImage(Image bmp, int newW, int newH, int Mode) 83 { 84 try 85 { 86 Image b = new Bitmap(newW, newH); 87 Graphics g = Graphics.FromImage(b); 88 // 插值算法的质量 89 g.InterpolationMode = InterpolationMode.HighQualityBicubic; 90 g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel); 91 g.Dispose(); 92 return b; 93 } 94 catch 95 { 96 return null; 97 } 98 } 99 100 public bool IsReusable 101 { 102 get 103 { 104 return false; 105 } 106 } 107}

效果如下

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

GitHub 上有哪些适合新手跟进的优质项目?

!(https://oscimg.oschina.net/oscnet/011f28e3bc332010e1442e6c00ed344805d.jpg)点击上方“迈微电子研发社”,选择“星标★”公众号重磅干货,第一时间送达!(https://oscimg.oschina.net/oscnet/cd44ba75f

PHP二维数组按某个键值排序

二维数组:$arrarray('name''小坏龙','age'28),array('name''小坏龙2','age'14),arr

asp.net(C#)利用QRCode生成二维码(续) - HelloWorld