步驟:
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; }
之后就可以得到以下:
經過我塗改的圖片