zoukankan      html  css  js  c++  java
  • Asp.Net生成二维码(中间加logo)

    using System;
    using ThoughtWorks.QRCode.Codec;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using Excel;
    using System.Web;
    using System.Data;
    protected void Page_Load(object sender, EventArgs e)
            {
                GetQRCode g = new GetQRCode();
                g.ProcessRequest(HttpContext.Current);
            }
    public class GetQRCode : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                string filePath = "XXX .xls";
                FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
                string strExtension = System.IO.Path.GetExtension(filePath);
                IExcelDataReader excelReader = null;
                if (strExtension.IndexOf("xlsx") > 0)
                {
                    excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                }
                else
                {
                    excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
                }
                excelReader.IsFirstRowAsColumnNames = false;
                DataSet result = excelReader.AsDataSet();
                for (int i = 2; i < 37; i++)
                {
                    string strUrl = Convert.ToString(result.Tables["Sheet1"].Rows[i][3]);
                    string strName = result.Tables["Sheet1"].Rows[i][1].ToString();
                        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(strUrl);
                        System.IO.MemoryStream MStream = new System.IO.MemoryStream();
                        image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
    
                        System.IO.MemoryStream MStream1 = new System.IO.MemoryStream();
                        var temp = string.Format(context.Server.MapPath("~/res/2018032222/"));
                    if (!Directory.Exists(temp))
                    {
                        Directory.CreateDirectory(temp);
                    }
                    string path_imgLogo = temp +"/"+ strName + ".png";
                    //CombinImage(image, context.Server.MapPath("~/images/播放.png")).Save(MStream1, System.Drawing.Imaging.ImageFormat.Png);
                    CombinImage(image, context.Server.MapPath("~/images/播放.png")).Save(path_imgLogo);
                    context.Response.ClearContent();
                        context.Response.ContentType = "image/png";
                        context.Response.BinaryWrite(MStream1.ToArray());
    
                        MStream.Dispose();
                        MStream1.Dispose();
                }
                context.Response.Flush();
                context.Response.End();
            }
    
            public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack,string destImg) 
            {
                System.Drawing.Image img = System.Drawing.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;  
            }
            private 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 (Exception)
                {
                    
                    return null;
                }
            }
            public bool IsReusable
            {
                get { return false; }
            }
        }
  • 相关阅读:
    面试题目-atof与ftoa
    数据结构-List
    数据结构-Vector
    面试题目-计算最大公约数
    数据结构-二分查找
    面试题目-用递归通过单字符输出打印多位的数字
    Linux-守护进程的实现
    面试题目-链表反转
    Linux-C程序的存储空间布局
    Linux-如何添加路由表
  • 原文地址:https://www.cnblogs.com/shiyige-216/p/8625109.html
Copyright © 2011-2022 走看看