源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#裁剪图片后使用zxing生成二维码示例分享

  • 时间:2022-07-23 23:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#裁剪图片后使用zxing生成二维码示例分享
[u]复制代码[/u] 代码如下:
/// <summary> /// 生成二维码 /// </summary> /// <param name="fileName">生成二维码路径</param> /// <param name="url">生成的内容</param> /// <param name="width">二维码宽</param> /// <param name="height">二维码高</param> /// <param name="userFace">需生成的Logo图片</param> /// <returns></returns> private Bitmap GetCodeImgUrl(string fileName, string url, int width, int height, string userFace) {     BarcodeWriter writer = new BarcodeWriter     {         Format = BarcodeFormat.QR_CODE,         Renderer = new BitmapRenderer         {             Foreground = Color.Black         },         Options = new ZXing.QrCode.QrCodeEncodingOptions         {             DisableECI = true,             Height = height,             Width = width,             Margin = 0,             CharacterSet = "UTF-8",             ErrorCorrection = ErrorCorrectionLevel.M         }     };     Bitmap bitmap = writer.Write(url);     if (!string.IsNullOrEmpty(userFace))     {         Bitmap bits = (System.Drawing.Bitmap)System.Drawing.Image.FromFile(userFace);         if (bits != null)         {                                //剪裁一个80*80的Logo图片             ImageCut img = new ImageCut(0, 0, 80, 80);             System.Drawing.Bitmap icon = img.KiCut(bits);             //userFace_b.jpg是一个边框的图片             Bitmap bits2 = new System.Drawing.Bitmap((System.Drawing.Bitmap)System.Drawing.Image.FromFile(Application.StartupPath + "/user/userFace_b.jpg"), 84, 84);             if (icon != null)             {                 try                 {                      //画了2个边框,一个是logo,一个在logo周围加了一个边框                     using (var graphics = System.Drawing.Graphics.FromImage(bitmap))                     {                         graphics.DrawImage(bits2, (bitmap.Width - bits2.Width) / 2, (bitmap.Height - bits2.Height) / 2);                         graphics.DrawImage(icon, (bitmap.Width - icon.Width) / 2, (bitmap.Height - icon.Height) / 2);                     }                 }                 catch (Exception ex)                 {                 }                 finally                 {                     icon.Dispose();                     GC.Collect();                 }             }             bitmap.Save(fileName, ImageFormat.Jpeg);         }     }     return bitmap; }
[u]复制代码[/u] 代码如下:
public class ImageCut   {       /// <summary>       /// 剪裁 -- 用GDI+       /// </summary>       /// <param name="b">原始Bitmap</param>       /// <param name="StartX">开始坐标X</param>       /// <param name="StartY">开始坐标Y</param>       /// <param name="iWidth">宽度</param>       /// <param name="iHeight">高度</param>       /// <returns>剪裁后的Bitmap</returns>       public Bitmap KiCut(Bitmap b)       {           if (b == null)           {               return null;           }           int w = b.Width;           int h = b.Height;           int intWidth = 0;           int intHeight = 0;           if (h * Width / w > Height)           {               intWidth = Width;               intHeight = h * Width / w;           }           else if (h * Width / w < Height)           {               intWidth = w * Height / h;               intHeight = Height;           }           else           {               intWidth = Width;               intHeight = Height;           }           Bitmap bmpOut_b = new System.Drawing.Bitmap(b, intWidth, intHeight);           w = bmpOut_b.Width;           h = bmpOut_b.Height;                    if (X >= w || Y >= h)           {               return null;           }           if (X + Width > w)           {               Width = w - X;           }           else           {               X = (w-Width) / 2;           }           if (Y + Height > h)           {               Height = h - Y;           }                      try           {               Bitmap bmpOut = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);                           Graphics g = Graphics.FromImage(bmpOut);               g.DrawImage(bmpOut_b, new Rectangle(0, 0, Width, Height), new Rectangle(X, Y, Width, Height), GraphicsUnit.Pixel);               g.Dispose();               return bmpOut;           }           catch           {               return null;           }       }       public int X = 0;       public int Y = 0;       public int Width = 120;       public int Height = 120;       public ImageCut(int x, int y, int width, int heigth)       {           X = x;           Y = y;           Width = width;           Height = heigth;       }   }
[u]复制代码[/u] 代码如下:
  private void btnSubmit_Click(object sender, EventArgs e)         {             string UserId = "1245460396";                string curFilePath = "/user/";             string curFileName_b = "DimensionalPig_" + UserId + "_b";             string path = Application.StartupPath + curFilePath;             if (Directory.Exists(path) == false)//如果不存在就创建file文件夹             {                 Directory.CreateDirectory(path);             }             string fileName_b = Application.StartupPath + curFilePath + "/" + curFileName_b + ".jpg";//获得上传文件名             string UserUrl = string.Format("http://www.1sucai.cn/u{0}", UserId.Trim());             string userFace_b = Application.StartupPath + "/user/" + UserId + "_b.jpg";             Bitmap bitmap_b = GetCodeImgUrl(fileName_b.Replace("_b.", "_b_ewm."), UserUrl, 400, 400, userFace_b);             this.p.Image =(System.Drawing.Image)bitmap_b; this.p.Image.Save(fileName_b.Replace("_b.", "_b_ewm."));
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部