微信小程序码中间Logo修改

步骤:

1.用微信小程序提供的接口获取小程序码

   appId, secret-》access_token

   access_token-》二维码(https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html) 注意这边有个参数是图片的大小,暂定为Size:1080

2.本地准备一张图片,不过因为小程序中间LOGO是圆形的,所以需要处理一下

 1  /// <summary>
 2         /// 图片处理为圆形
 3         /// </summary>
 4         /// <param name="img"></param>
 5         /// <param name="rec"></param>
 6         /// <param name="size"></param>
 7         /// <returns></returns>
 8         public static Image CutEllipse(Image img, Rectangle rec, Size size)
 9         {
10             Bitmap bitmap = new Bitmap(size.Width, size.Height);
11             using (Graphics g = Graphics.FromImage(bitmap))
12             {
13                 using (TextureBrush br = new TextureBrush(img, System.Drawing.Drawing2D.WrapMode.Clamp, rec))
14                 {
15                     br.ScaleTransform(bitmap.Width / (float)rec.Width, bitmap.Height / (float)rec.Height);
16                     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
17                     g.FillEllipse(br, new Rectangle(Point.Empty, size));
18                 }
19             }
20             return bitmap;
21         }

这边注意的就是图片的宽度和高度(也就是半径)必须是上面二维码大小的一半(Size/2),才能完美覆盖

3.之后就是把图片画在获取的二维码上

 /// <summary>
        /// 调用此函数后使此两种图片合并,类似相册,有个
        /// 背景图,中间贴自己的目标图片
        /// </summary>
        /// <param name="imgBack">粘贴的源图片</param>
        /// <param name="destImg">粘贴的目标图片</param>
        public static Image CombinImage(Image imgBack, Image img,int r)
        {
            //string destImg
           // Image img = Image.FromFile(destImg);    //照片图片
            if (img.Height != r || img.Width != r)
            {
                img = KiResizeImage(img, r, r, 0);
            }
            img = CutEllipse(img, new Rectangle(0, 0, r, r), new Size(r, r));
            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;
        }

之后就可以得到以下:

经过我涂改的图片

 

posted @ 2018-08-21 14:12  守望星辰的夏天  阅读(9896)  评论(0编辑  收藏  举报