步骤:
1.用微信小程序提供的接口获取小程序码
appId, secret-》access_token
access_token-》二维码(https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html) 注意这边有个参数是图片的大小,暂定为Size:1080
2.本地准备一张图片,不过因为小程序中间LOGO是圆形的,所以需要处理一下
1 ///2 /// 图片处理为圆形 3 /// 4 /// 5 /// 6 /// 7 /// 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.之后就是把图片画在获取的二维码上
////// 调用此函数后使此两种图片合并,类似相册,有个 /// 背景图,中间贴自己的目标图片 /// /// 粘贴的源图片 /// 粘贴的目标图片 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; }
之后就可以得到以下:
经过我涂改的图片