今天这篇博客是关于图片操作的,包括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的屏幕截图功能
相关阅读




文章评论