今天这篇博客是关于图片操作的,包括2部分,分别是图片编辑和图片识别。不过多深入,分享下用到了哪些技术?废话不多说,直接进入正题
图片识别
这里用到的技术是百度AI平台。它提供WebAPI接口供别人调用,还可以通过SDK调用。代码简单,贴个调用示例
Encoding encoding = Encoding.Default; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPath); request.Method = "post"; request.KeepAlive = true; String urlParam = "image=" + HttpUtility.UrlEncode(imageBase64); if (dicParam != null) { string urlParamOth = UrlHelper.ComboUrlParam(dicParam); urlParam += "&" + urlParamOth; } byte[] buffer = encoding.GetBytes(urlParam); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string result = reader.ReadToEnd(); return result;
图片编辑
格式转换
普通的图片格式,如jpg、jpeg、png、bmp,都可以用System.Drawing.Image对象即可,如果是Svg格式、WebP格式,可以参考这篇博客中提到的组件。
合并图片
就是将图片拼接,最多支持9张。布局包括1x2、1x2、1x3。。。最多支持3x3的九宫格。
裁剪图片
就是截取部分图片,根据坐标和尺寸。
文字转图片
可以设置图片的背景色,文字大小、颜色和字体
Base64转图片
图片转Base64
将图片转为Base64字符串,可以用于WebAPI交互,而且支持批量操作
/// <summary> /// Base64与图片互转 /// 参考地址:http://www.cnblogs.com/freeliver54/p/3430956.html /// </summary> /// <param name="fileFullName"></param> /// <returns></returns> public static string SetImageToBase64(string fileFullName) { string base64 = string.Empty; Bitmap bmp = new Bitmap(fileFullName); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] bytes = new byte[ms.Length]; ms.Position = 0; ms.Read(bytes, 0, (int)ms.Length); ms.Close(); base64 = Convert.ToBase64String(bytes); return base64; } /// <summary> /// 图片与Base64互转 /// </summary> /// <param name="bmp"></param> /// <returns></returns> public static string SetImageToBase64(Bitmap bmp) { MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] bytes = new byte[ms.Length]; ms.Position = 0; ms.Read(bytes, 0, (int)ms.Length); ms.Close(); string base64 = Convert.ToBase64String(bytes); return base64; } /// <summary> /// Base64与图片互转 /// 参考地址:http://www.cnblogs.com/freeliver54/p/3430956.html /// </summary> /// <param name="base64"></param> /// <returns></returns> public static Image GetImageByBase64(string base64) { Image image = null; byte[] imageBytes = Convert.FromBase64String(base64); //读入MemoryStream对象 MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); //转成图片 image = Image.FromStream(memoryStream); return image; }
去水印
即图片马赛克处理,隐藏不需要显示的地方
加文字水印
加图片水印
文字和图片的水印,都支持
图片转视频
这里用到了ffmpeg组件,大名鼎鼎。参数也简单,如下所示。里面有N多参数
listP.Add("-framerate"); listP.Add(frameRate.ToString()); listP.Add("-f"); listP.Add("image2"); listP.Add("-i"); listP.Add(@"""" + imageFolder + @"\%d.jpg" + @""""); if (!string.IsNullOrEmpty(mediaFile)) { listP.Add("-i"); listP.Add(@"""" + mediaFile + @""""); }
屏幕截图
就是仿QQ的屏幕截图功能
相关阅读
文章评论