今天被朋友圈刷屏了,一堆人发消息艾特微信官方要国旗。最初搞不懂是怎么回事,最后从网上文章中了解到,今天在朋友圈里面艾特微信官方要国旗可以在微信头像的右下角加一面国旗。感觉用C#实现类似功能也不麻烦,因此写个简单程序模仿一下。
首先是找国旗素材,直接在百度图片里面找了一个小尺寸的国旗图片。但是找到的图片背景是白色的,需要把背景色变为透明。由于电脑上没有装图片处理程序,于是在网上找了一个线图片去底工具,网址为http://www.aigei.com/bgremover/ ,使用该在线工具可以很方面的去掉纯色背景(而且免费、不用注册,也不用其它账号登录)。处理好的国旗图片如下所示:
接下来是编写主程序。代码逻辑不是很复杂,用户选一张图片,然后程序创建一个新的图片,将用户图片和国旗图片依次使用GDI+函数绘制到新的图片中,然后将新图片保存到本地。为了简单起见,将国旗直接加到图片的右下角,国旗尺寸与用户图片的尺寸比例保持在20%左右,图片格式只支持jpg。主要代码如下:
Bitmap flaggedImage = new Bitmap(initImage.Width, initImage.Height);
Graphics g = Graphics.FromImage(flaggedImage);
g.DrawImage(initImage, 0, 0, flaggedImage.Width, flaggedImage.Height);
int flagSize = (int)Math.Min(flaggedImage.Width * 0.2f, flaggedImage.Height * 0.2f);
Rectangle rect = new Rectangle();
rect.X = flaggedImage.Width - flagSize;
rect.Y = flaggedImage.Height - flagSize;
rect.Width = flagSize;
rect.Height = flagSize;
g.DrawImage(AddRedFlag.Properties.Resources.flag, rect);
程序主界面如下,处理图片的截图也如下所示:
示例代码放在了Github上面,地址为:https://github.com/guochao2299/AddNationalFlag
备注:
[1]国旗图片原网址为:http://www.sohu.com/a/194839193_667858,