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);
最后图片重绘的效果如下:

C# 重绘图片.图片加字,加矩形,加圆,加线,根据XY坐标修改RGB的更多相关文章
- DOM 操作成本究竟有多高,HTML、CSS构建过程 ,从什么方向出发避免重绘重排)
前言: 2019年!我准备好了 正文:从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM.尤其是React.vue等MV*框架的出现,数据驱动视图的模式越发深入人心,jQ ...
- 【JS】313- 复习 回流和重绘
点击上方"前端自习课"关注,学习起来~ 原文地址:我不是陈纪庚 segmentfault.com/a/1190000017329980 回流和重绘可以说是每一个web开发者都经常听 ...
- 上传图片时,使用GDI+中重绘方式将CMYK图片转为RGB图片
原文:上传图片时,使用GDI+中重绘方式将CMYK图片转为RGB图片 我们知道,如果网站上传图片时,如果用户上传的是CMYK图片,那么在网站上将是无法显示的,通常的现象是出现一个红叉.下面使用将Ima ...
- 继承UIView的初始化 、重绘、以及绘制图片
大家对于UIViewController的生命周期都相当了解了.但是对于继承UIView的子类能做什么,却很少有文章介绍的. 1. -initWithFrame:(CGRect)rect是view指 ...
- Vue动态加载图片图片不显示
图片是放在assets文件夹下的 使用require进行解决 图片不显示的原因 在webpack,将图片放在assets中,会将图片图片来当做模块来用,因为是动态加载的,所以url-loader将无法 ...
- xp系统重绘边框线不显示(首次加载没有触发paint事件)
同样是,重绘边框事件,win7系统显示正常,而xp系统却不显示,这是什么原因造成的呢? 于是,小编开始百度,不停的查找原因,通过一番查找,小编也意外的收获了一些内容: 例如:窗口的拖动,放大,缩小,等 ...
- php 移动或重命名文件(图片)到另一目录下的方法有多种,这里只列出三种:
php 移动或重命名文件(图片)到另一目录下的方法有多种,这里只列出三种: 方法一:使用copy函数 格式:copy(source,destination) 将文件从 source ...
- bootstrap设计横线上加字
1.给横线上加字 . 2.思路:通过z-index实现,可以将父元素的z-index设置成2,而横线的z-index设置成-1,这样有字的地方就可以覆盖横线,再设置字的padding达到合理的宽度 ( ...
- VC++中关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
而OnPaint()是CWnd的类成员,同时负责响应WM_PAINT消息. OnDraw()是CVIEW的成员函数,并且没有响应消息的功能.这就是为什么你用VC成的程序代码时,在视图类只有OnDraw ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
随机推荐
- 机器学习-线性分类-softmax回归 做多分类-10
1. softmax回归 伯努利分布(0-1分布 二分类),我们采用Logistic回归(用sigmoid函数映射到 0-1之间 输出预测概率)建模. 那么我们应该如何处理多分类问题?(比如要进行邮件 ...
- 【架构师视角系列】Apollo配置中心之Client端(二)
原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/17978027 目录 声明 配置中心系列文章 一.客户端架构 1.Config Service职责 (1) ...
- [转帖]GB18030 编码
https://www.qqxiuzi.cn/zh/hanzi-gb18030-bianma.php GB18030编码采用单字节.双字节.四字节分段编码方案,具体码位见下文.GB18030向下兼容G ...
- [转帖]SQL Server索引的维护 - 索引碎片、填充因子
https://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故 ...
- Windows平台的prometheus和Grafana的学习与使用
Windows平台的prometheus和Grafana的学习与使用 背景 最近没有了linux机器 突然想捯饬一下Windows平台的监控与使用 所以总结一一下. 第一步下载 https://pro ...
- [转帖]oracle 11.2.0.4 rac集群等待事件enq: TM - contention
近期,一金融客户oracle 11.2.0.4 rac集群delete不当导致等待事件enq: TM - contention严重引起大范围会话堆积,记录的相关分析工作如下. 1.登录集群任意节点,查 ...
- tiup 工具离线安装与简单导出数据说明
tiup 工具离线安装说明 mirror的创建 能上网的机器上面进行如下操作: curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pi ...
- [转帖]linux系统下grub.cfg详解和实例操作
linux系统下grub.cfg详解和实例操作 简介 grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后,内核会根据grub配置文件中的配置,找到根分区所使用的文 ...
- Redis性能问题诊断以及scan命令耗时分析
Redis性能问题诊断以及scan命令耗时分析 摘要 最近公司有项目反馈卡顿. 卡顿一小时后自己被拉入群聊. 同事已经基本上定位到问题原因. 我这边想使用朴素的性能观点进行一下性能问题的拆解 为了提高 ...
- Nginx反向代理总结
反向代理的种类 1. LVS的方案 2. DNS轮询的方案 3. Nginx的4层代理 4. Nginx的7层代理 5. 网络NAT的处理 Nginx的反向代理-四层` 编译时增加 --with-st ...