C# 重绘图片.图片加字,加矩形,加圆,加线,根据XY坐标修改RGB
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Net.Http; namespace SiteApp.BLL.Common { public class ImageHelper { /// <summary> /// 获取网络路劲的图片 /// </summary> /// <param name="url"></param> /// <returns></returns> public static Image GetHttpImage(string url) { var client = new HttpClient(); var uri = new Uri(Uri.EscapeUriString(url)); byte[] urlContents = client.GetByteArrayAsync(uri).Result; using (var ms = new System.IO.MemoryStream(urlContents)) { return Image.FromStream(ms); } } /// <summary> /// 将Base64字符串转换为Image对象 /// </summary> /// <param name="base64Str">base64字符串</param> /// <returns></returns> public static Bitmap Base64StrToImage(string base64Str) { Bitmap bitmap = null; try { byte[] arr = Convert.FromBase64String(base64Str); MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); ms.Close(); bitmap = bmp; } catch (Exception ex) { } return bitmap; } /// <summary> /// 图片加字 /// </summary> /// <param name="old"></param> /// <param name="text"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public static Bitmap ImgDrawString(Bitmap old,string text,int x,int y) { #region 图片加字 Bitmap bmp = new Bitmap(old); Graphics g = Graphics.FromImage(bmp); Font font = new Font("宋体", 15); SolidBrush sbrush = new SolidBrush(Color.Black); g.DrawString(text, font, sbrush, new PointF(x, y)); MemoryStream ms = new MemoryStream(); #endregion return bmp; } /// <summary> /// 图片加矩形 /// </summary> /// <param name="old"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public static Bitmap ImgDrawRectangle(Bitmap old,int x,int y,int width,int height) { Bitmap bmp = new Bitmap(old); #region 矩形 Graphics g = Graphics.FromImage(bmp); Brush brush = new SolidBrush(Color.Black); Pen pen = new Pen(brush, 1); pen.DashStyle = DashStyle.DashDot; g.DrawRectangle(pen, new Rectangle(x, y, width, height)); g.Dispose(); #endregion return bmp; } /// <summary> /// 图片加圆 /// </summary> /// <param name="old"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public static Bitmap ImgDrawEllipse(Bitmap old, int x, int y, int width, int height) { Graphics g = Graphics.FromImage(old); Brush brush = new SolidBrush(Color.Black); Pen pen = new Pen(brush, 1); pen.DashStyle = DashStyle.DashDot; g.DrawEllipse(pen, new Rectangle(x, y, width, height)); g.Dispose(); return old; } /// <summary> /// 图片加线 /// </summary> /// <param name="old"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <returns></returns> public static Bitmap ImaDrawLine(Bitmap old, int x, int y, int x1, int y1) { Graphics g = Graphics.FromImage(old); Brush brush = new SolidBrush(Color.Black); Pen pen = new Pen(brush, 1); pen.DashStyle = DashStyle.DashDot; g.DrawLine(pen, x, y, x1, y1); g.Dispose(); return old; } /// <summary> /// 图片根据XY修改RGB /// </summary> /// <param name="old"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="r"></param> /// <param name="g"></param> /// <param name="b"></param> /// <returns></returns> public static Bitmap ImaDrawPixel(Bitmap old, int x, int y, int r, int g, int b) { var rgb = old.GetPixel(x, y); old.SetPixel(x, y, Color.FromArgb(r, g, b)); return old; } } }
调用方式
Bitmap image = (Bitmap)ImageHelper.GetHttpImage(newInfraredList[i].ImgBase64);// 这里是HTTP:// 开头的图片路劲 var img = ImageHelper.Base64StrToImage(entity.ImgBase64); var newImg = ImageHelper.ImgDrawString(newImg, $"最高温度:{ list[b].Max}°C,最低温度:{ list[b].Min}°C", x - 10, y - 10); var newImg = ImageHelper.ImgDrawRectangle(image, x, y, width, height); var newImg = ImageHelper.ImgDrawEllipse(image, x, y, width, height); var newImg = ImageHelper.ImaDrawLine(image, x, y, x1, y1); var bmpTemp = ImageHelper.ImaDrawPixel(bmp,0,0,255,255,255);
最后图片重绘的效果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?