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 ...
随机推荐
- RL 基础 | 如何搭建自定义 gym 环境
需实现的方法: __init__(self): 需定义 action_space 和 observation_space,使用 space.Box 之类来表示(from gym import spac ...
- 文心一言 VS 讯飞星火 VS chatgpt (184)-- 算法导论13.5 1题
一.用go语言,对于图14-1中的红黑树 T,说明执行 OS-SELECT(T.root,10)的过程. 文心一言: 在红黑树中,OS-SELECT 是一个用于在树中查找特定键值的操作.给定一个红黑树 ...
- Mongo库表占用空间统计
1. 背景 DBA同事反馈说Mongp集群磁盘占用空间过大,超过监控告警95%阈值,因此建议删除部分资源或者申请扩容,本着开源节流的理念,还是乖乖看哪些老数据应该删除.但Mongo中的库和表过多,因此 ...
- [转帖]Nginx access log 按日期保存记录
https://cloud.tencent.com/developer/article/1958304 $time_iso8601 生成格式:2021-09-18T15:16:35+08:00 ...
- [转帖]MySQL如何在InnoDB中重建索引并更新统计数据?
https://geek-docs.com/mysql/mysql-ask-answer/356_mysql_how_can_i_rebuild_indexes_and_update_stats_in ...
- [转帖]一次SSL握手异常,我发现JDK还有发行版区别
https://www.cnblogs.com/codelogs/p/16633704.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近,我们一个 ...
- [转帖]Innodb存储引擎-锁(数据库锁的查看、快照读&当前读、MVCC、自增长与锁、外键与锁、行锁、并发事务的问题、阻塞、死锁、锁升级、锁的实现)
文章目录 锁 lock 与latch 读锁/写锁/意向锁 INNODB_TRX/INNODB_LOCKS/INNODB_LOCK_WAITS 一致性非锁定读(快照读) 一致性锁定读(当前读) MVCC ...
- [转帖]SQL标准
SQL 的标准 1986 年 10 月,美国国家标准协会 ANSI 采用 SQL 作为关系数据库管理系统的标准语言,并命名为 ANSI X3. 135-1986,后来国际标准化组织(ISO)也采纳 S ...
- Redis scan等命令的学习与研究
Redis scan等命令的学习与研究 摘要 背景跟前几天说的一个问题类似. 为了验证自己的设想, 所以晚上继续写脚本进行了一轮次的验证. 不过上次讨论时,打击好像都没听懂我说的 所以这次准备从基础开 ...
- [转帖]jemalloc内存分配算法
https://www.cnblogs.com/xiaojiesir/p/15450732.html jemalloc内存分配算法简介 jemalloc 是由 Jason Evans 在 FreeBS ...