C#:Bitmap类使用方法—第1讲
首先看一下Bitmap定义:封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象。
下面介绍一下使用的例子:
Bitmap image1;
private void Button1_Click(System.Object sender, System.EventArgs e)
{
try
{
// Retrieve the image.
image1 = new Bitmap(@"C:\Documents and Settings\All Users\"
+ @"Documents\My Music\music.bmp", true);
int x, y;
// Loop through the images pixels to reset color.
for(x=0; x<image1.Width; x++)
{
for(y=0; y<image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
image1.SetPixel(x, y, newColor);
}
}
// Set the PictureBox to display the image.
PictureBox1.Image = image1;
// Display the pixel format in Label1.
Label1.Text = "Pixel format: "+image1.PixelFormat.ToString();
}
catch(ArgumentException)
{
MessageBox.Show("There was an error." +
"Check the path to the image file.");
}
}
注释:
位图由图形图像的像素数据及其属性组成。 有许多标准格式可用于将位图保存到文件中。 GDI+ 支持以下文件格式:BMP、GIF、EXIF、JPG、PNG 和 TIFF。 有关支持的格式的详细信息,请参阅 位图的类型。
可以使用其中一个 Bitmap 构造函数从文件、流和其他源创建图像,并使用 方法将它们保存到流或文件系统 Save 。 使用 DrawImage 对象的 方法 Graphics 将图像绘制到屏幕或内存中。 有关使用图像文件的主题列表,请参阅 使用图像、位图、图标和图元文件。
构造函数:
| Bitmap(Image) | 从指定的现有图像初始化 Bitmap 类的新实例。 |
| Bitmap(Image, Int32, Int32) | 从指定的现有图像(缩放到指定大小)初始化 Bitmap 类的新实例。 |
| Bitmap(Image, Size) | 从指定的现有图像(缩放到指定大小)初始化 Bitmap 类的新实例。 |
| Bitmap(Int32, Int32) | 用指定的大小初始化 Bitmap 类的新实例。 |
| Bitmap(Int32, Int32, Graphics) | 用指定的大小和指定的 Graphics 对象的分辨率初始化 Bitmap 类的新实例。 |
| Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr) | 用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。 |
| Bitmap(Int32, Int32, PixelFormat) | 用指定的大小和格式初始化 Bitmap 类的新实例。 |
| Bitmap(Stream) | 从指定的数据流初始化 Bitmap 类的新实例。 |
| Bitmap(Stream, Boolean) | 从指定的数据流初始化 Bitmap 类的新实例。 |
| Bitmap(String) | 从指定的文件初始化 Bitmap 类的新实例。 |
| Bitmap(String, Boolean) | 从指定的文件初始化 Bitmap 类的新实例。 |
| Bitmap(Type, String) | 从指定的资源初始化 Bitmap 类的新实例。 |
属性:
| Flags | 获取该 Image 的像素数据的特性标志。 (继承自 Image) |
| FrameDimensionsList | 获取 GUID 的数组,这些 GUID 表示此 Image 中帧的维数。 (继承自 Image) |
| Height | 获取此 Image 的高度(以像素为单位)。 (继承自 Image) |
| HorizontalResolution | 获取此 Image 的水平分辨率(以“像素/英寸”为单位)。 (继承自 Image) |
| Palette | 获取或设置用于此 Image 的调色板。 (继承自 Image) |
| PhysicalDimension | 获取此图像的宽度和高度。 (继承自 Image) |
| PixelFormat | 获取此 Image 的像素格式。 (继承自 Image) |
| PropertyIdList | 获取存储于该 Image 中的属性项的 ID。 (继承自 Image) |
| PropertyItems | 获取存储于该 Image 中的所有属性项(元数据片)。 (继承自 Image) |
| RawFormat | 获取此 Image 的文件格式。 (继承自 Image) |
| Size | 获取此图像的宽度和高度(以像素为单位)。 (继承自 Image) |
| Tag | 获取或设置提供有关图像的附加数据的对象。 (继承自 Image) |
| VerticalResolution | 获取此 Image 的垂直分辨率(以“像素/英寸”为单位)。 (继承自 Image) |
| Width | 获取此 Image 的宽度(以像素为单位)。 (继承自 Image) |
方法:
| Clone() | 创建此 Image 的一个精确副本。 (继承自 Image) |
| Clone(Rectangle, PixelFormat) | 创建此 Bitmap(它由 Rectangle 结构并使用指定的 PixelFormat 枚举定义)部分的副本。 |
| Clone(RectangleF, PixelFormat) | 创建此 Bitmap(用指定的 PixelFormat 枚举定义)部分的副本。 |
| CreateObjRef(Type) | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject) |
| Dispose() | 释放此 Image 使用的所有资源。 (继承自 Image) |
| Dispose(Boolean) | 释放由 Image 占用的非托管资源,还可以另外再释放托管资源。 (继承自 Image) |
| Equals(Object) | 确定指定对象是否等于当前对象。 (继承自 Object) |
| FromHicon(IntPtr) | 从图标的 Windows 图柄创建 Bitmap。 |
| FromResource(IntPtr, String) | 从指定的 Windows 资源创建 Bitmap。 |
| GetBounds(GraphicsUnit) | 以指定的单位获取图像的界限。 (继承自 Image) |
| GetEncoderParameterList(Guid) | 返回有关指定的图像编码器所支持的参数的信息。 (继承自 Image) |
| GetFrameCount(FrameDimension) | 返回指定维度的帧数。 (继承自 Image) |
| GetHashCode() | 作为默认哈希函数。 (继承自 Object) |
| GetHbitmap() | 从此 Bitmap创建 GDI 位图对象。 |
| GetHbitmap(Color) | 从此 Bitmap创建 GDI 位图对象。 |
| GetHicon() | 返回图标的图柄。 |
| GetLifetimeService() | 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject) |
| GetPixel(Int32, Int32) | 获取此 Bitmap 中指定像素的颜色。 |
| GetPropertyItem(Int32) | 从该 Image 获取指定的属性项。 (继承自 Image) |
| GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr) | 返回此 Image 的缩略图。 (继承自 Image) |
| GetType() | 获取当前实例的 Type。 (继承自 Object) |
| InitializeLifetimeService() | 获取生存期服务对象来控制此实例的生存期策略。 (继承自 MarshalByRefObject) |
| LockBits(Rectangle, ImageLockMode, PixelFormat) | 将 Bitmap 锁定到系统内存中。 |
| LockBits(Rectangle, ImageLockMode, PixelFormat, BitmapData) | 将 Bitmap 锁定到系统内存中。 |
| MakeTransparent() | 让 Bitmap 的默认透明颜色为透明。 |
| MakeTransparent(Color) | 使指定的颜色对此 Bitmap 透明。 |
| MemberwiseClone() | 创建当前 Object 的浅表副本。 (继承自 Object) |
| MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject) |
| RemovePropertyItem(Int32) | 从该 Image 移除指定的属性项。 (继承自 Image) |
| RotateFlip(RotateFlipType) | 旋转、翻转或者同时旋转和翻转 Image。 (继承自 Image) |
| Save(Stream, ImageCodecInfo, EncoderParameters) | 使用指定的编码器和图像编码器参数,将该图像保存到指定的流。 (继承自 Image) |
| Save(Stream, ImageFormat) | 将此图像以指定的格式保存到指定的流中。 (继承自 Image) |
| Save(String) | 将该 Image 保存到指定的文件或流。 (继承自 Image) |
| Save(String, ImageCodecInfo, EncoderParameters) | 使用指定的编码器和图像编码器参数,将该 Image 保存到指定的文件。 (继承自 Image) |
| Save(String, ImageFormat) | 将此 Image 以指定格式保存到指定文件。 (继承自 Image) |
| SaveAdd(EncoderParameters) | 将帧添加到上次对 Save 方法调用时所指定的文件或流中。 使用此方法将多帧图像中的选定帧保存到另一个多帧图像。 (继承自 Image) |
| SaveAdd(Image, EncoderParameters) | 将帧添加到上次对 Save 方法调用时所指定的文件或流中。 (继承自 Image) |
| SelectActiveFrame(FrameDimension, Int32) | 选择由维度和索引指定的帧。 (继承自 Image) |
| SetPixel(Int32, Int32, Color) | 在此 Bitmap 中设置指定像素的颜色。 |
| SetPropertyItem(PropertyItem) | 在此 Image 中存储一个属性项(元数据片)。 (继承自 Image) |
| SetResolution(Single, Single) | 设置此 Bitmap 的分辨率。 |
| ToString() | 返回表示当前对象的字符串。 (继承自 Object) |
| UnlockBits(BitmapData) | 从系统内存解锁此 Bitmap。 |
上面就是BItmap的基础知识,下面会按照每个方法的如何使用,进行细致讲解。
相关文章:
C#:Bitmap类使用方法—第1讲
首先看一下Bitmap定义:封装 GDI 位图,此位图由图形图像及其属性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象。 下面介绍一下使用的例子: Bitmap image1; private void Button1_Click(System.Object sender, System.Eve…...
PaddleNLP 3.0 支持大语言模型开发
huggingface不支持模型并行。张量并行,不满足大规模预训练的需求。 1、组网部分 2、数据流 3、训练器 4、异步高效的模型存储...
32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
1.roles目录介绍 files:⽤来存放由copy模块或script模块调⽤的⽂件。 tasks:⾄少有⼀个main.yml⽂件,定义各tasks。 handlers:有⼀个main.yml⽂件,定义各handlers。 templates:⽤来存放jinjia2模板。 vars:…...
I2C通信协议(软件I2C和硬件I2C)
相比于之前学的异步全双工且需要两条通信线的串口通信,I2C则为同步半双工,仅需要一条通信线,全双工与半双工区别如下: 全双工(Full Duplex)半双工(Half Duplex)数据传输方式同时双向…...
Linux入门——08 进程间通讯——管道
1.进程间通讯 1.1什么是通讯 进程具有独立性(每个进程都有自己的PCB,独立地址空间,页表)但是要进行进程的通信,通信的成本一定不低,打破了独立性 进程间通信目的 数据传输:一个进程需要将它的数据发送给…...
深入探讨SD NAND的SD模式与SPI模式初始化
在嵌入式系统和存储解决方案中,SD NAND的广泛应用是显而易见的。CS创世推出的SD NAND支持SD模式和SPI模式,这两种模式在功能和实现上各有优劣。在本文中,我们将深入探讨这两种模式的初始化过程,并比较它们在不同应用场景下的优劣&…...
【jvm】栈和堆的区别
目录 1. 用途2. 线程共享性3. 内存分配和回收4. 生命周期5. 性能特点 1. 用途 1.堆:主要用于存储对象实例和数组。在Java中,所有通过new关键字创建的对象都会被分配到堆上。堆是一个大的内存池,用于存储所有的Java对象,包括实例变…...
智能的意义是降低世界的不确定性
世界充满着不确定性,而智能天生就追求一定的确定性,因为不确定性会危及智能的生存。智能本身是一种有序、相对确定的结构产生的,虽然也有一定的不确定性,而且这些不确定性有利于智能的进化,但是,相对而言&a…...
python实现指数平滑法进行时间序列预测
python实现指数平滑法进行时间序列预测 一、指数平滑法定义 1、指数平滑法是一种常用的时间序列预测算法,有一次、二次和三次平滑,通过加权系数来调整历史数据权重; 2、主要思想是:预测值是以前观测值的加权和,且对不同的数据给予不同的权数,新数据给予较大的权数,旧数…...
linux文件——用户缓冲区——概念深度探索、IO模拟实现
前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口,…...
Hive3:常用查询语句整理
一、数据准备 建库 CREATE DATABASE itheima; USE itheima;订单表元数据 1 1000000 100058 6 -1 509.52 0.00 28155.40 499.33 0 0 lisi shanghai 157 2019-06-22 17:28:15 2019-06-22 17:28:15 1 2 5000000 100061 72 -1 503.86 0.00 38548.00 503.86 1 0 zhangsan shangha…...
Ubuntu下载安装教程|Ubuntu最新长期支持(LTS)版本24.04 LTS下载安装
安装Ubuntu Ubuntu最新长期支持(LTS)版本24.04 LTS Ubuntu 24.04 LTS | 概览 Ubuntu长期支持(LTS)版本,LTS意为“长期支持”,一般为5年。LTS版本将提供免费安全和维护更新至 2029年4月。 Ubuntu 24.04 LTS(代号“Noble Numbat”,…...
通知:《自然语言及语音处理设计开发工程师》即将开课!
自然语言及语音处理设计开发工程师:未来职业的黄金选择 下面我们来看看证书颁发的背景: 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求,深入实…...
Vim youcompleteme Windows 安装保姆级教程
不说废话。 准备 检查 Vim 的 Python 配置 安装好 vim 和 python 后(python 必须 ≥ \ge ≥ 3.6),在 cmd 下运行 vim --version会弹出以下窗口。 如果发现 python/dyn 和 python3/dyn 都是 - (我不知道只有前者是 能不能运行…...
港迪技术IPO提交注册,拟募资6.56亿元
武汉港迪技术股份有限公司(下称“港迪技术”)拟在创业板IPO上市,并于近期在深交所提交招股书(注册稿),进入提交注册阶段。 港迪技术IPO招股书(注册稿)显示,公司是一家专…...
retinaface在ubuntu20.04(wsl2)下使用tensorrt(c++)部署
1. 参考博客: 1. Retinaface Tensorrt Python/C部署:https://blog.csdn.net/weixin_45747759/article/details/124534079 2. B站视频教程:https://www.bilibili.com/video/BV1Nv4y1K727/ 3. Retinaface_…...
vue打包设置 自定义的NODE_ENV
默认NODE_ENV 自定义process.env.NODE_ENV的值_process.node.env的值-CSDN博客 NODE_ENV开发环境下:NODE_ENVdevelopment(默认) 生产环境下:NODE_ENVproduction(默认) NODE_ENV 除了默认的 development 和 production 以外,确实可以自定义…...
python爬虫521
爬虫521 记录 记录 最近想学爬虫,尝试爬取自己账号下的文章标题做个词云 csdn有反爬机制 原理我就不说啦 大家都写了 看到大家结果是加cookie 但是我加了还是521报错 尝试再加了referer 就成功了(╹▽╹) import matplotlib import requests from wordcloud impor…...
CSS中flex:1是什么属性
flex: 1 是 CSS 中的一个简写属性,用于设置 Flex 项目的灵活伸缩比例(flex-grow)、收缩比例(flex-shrink)以及基础大小(flex-basis)。具体来说,flex: 1 实际上是以下三个属性的简写&…...
网络硬件升级指南:提升性能的策略与实践
随着企业对网络依赖程度的增加,网络性能的提升已成为信息技术部门的首要任务。本文将探讨如何通过升级网络硬件来提高网络性能,包括选择正确的硬件、实施升级策略和考虑未来网络的可扩展性。 一、网络性能的重要性 在数字化时代,网络是企业…...
人工智能高质量数据集概述
人工智能高质量数据集,是指经过标准化采集、清洗、标注、质检、脱敏及结构化处理,能够直接用于人工智能模型开发、训练与优化,且能有效提升模型性能、保障模型泛化能力,具备高可用性、高一致性、高安全性和高适配性的结构化或非结…...
5分钟搞定!Fun-ASR-MLT-Nano-2512多语言语音识别一键部署指南
5分钟搞定!Fun-ASR-MLT-Nano-2512多语言语音识别一键部署指南 1. 快速了解Fun-ASR-MLT-Nano-2512 Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的轻量级多语言语音识别模型,特别适合需要本地化部署的场景。这个800M参数的模型虽然小巧,但功能…...
Python+MinIO实战:5分钟搞定对象存储文件上传下载(附完整代码)
PythonMinIO实战:5分钟搞定对象存储文件上传下载(附完整代码) 对象存储正在成为现代应用开发中不可或缺的基础设施。无论是个人项目还是企业级应用,高效、可靠的文件存储方案都能显著提升开发效率。MinIO作为一款高性能的对象存储…...
OpenClaw成本优化方案:ollama GLM-4.7-Flash自建模型接口实践
OpenClaw成本优化方案:ollama GLM-4.7-Flash自建模型接口实践 1. 为什么需要关注OpenClaw的token消耗问题 第一次用OpenClaw完成自动化周报任务时,我盯着账单倒吸一口凉气——生成三份周报竟然消耗了接近15万token。这让我意识到,如果不解决…...
避开这些坑!Sigma-Delta调制器设计中最容易忽略的5个稳定性问题(附MASH级联实测数据)
避开这些坑!Sigma-Delta调制器设计中最容易忽略的5个稳定性问题(附MASH级联实测数据) 在高速高精度ADC设计中,Sigma-Delta调制器因其优异的噪声整形特性成为首选方案。但当工程师们沉浸在理论计算的理想世界时,实验室示…...
零基础玩转OpenClaw:nanobot镜像可视化控制台入门
零基础玩转OpenClaw:nanobot镜像可视化控制台入门 1. 为什么选择nanobot镜像作为OpenClaw入门 第一次接触OpenClaw时,我被它强大的本地自动化能力所吸引,但很快就被复杂的命令行配置劝退了。直到发现了nanobot这个超轻量级OpenClaw镜像&…...
Qwen3.5-4B-Claude-Opus推理模型实战:系统提示词工程最佳实践
Qwen3.5-4B-Claude-Opus推理模型实战:系统提示词工程最佳实践 1. 模型概述与核心能力 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。这个版…...
通义千问3-Reranker-0.6B效果对比:不同参数规模的性能差异
通义千问3-Reranker-0.6B效果对比:不同参数规模的性能差异 1. 引言 在AI快速发展的今天,文本检索和排序技术已经成为智能搜索、推荐系统和RAG应用的核心。通义千问团队最新推出的Qwen3-Reranker系列模型,提供了从0.6B到8B多种参数规模的选择…...
数据库课程设计案例:基于深度感知的智能仓储管理系统
数据库课程设计案例:基于深度感知的智能仓储管理系统 每次路过大型物流仓库,看到那些高耸的货架和穿梭的叉车,我总会想,他们是怎么知道哪个货位是满的,哪个是空的?靠人工盘点?那得累死。靠传统…...
Vision-Agents:构建下一代实时视觉AI代理的终极指南
Vision-Agents:构建下一代实时视觉AI代理的终极指南 【免费下载链接】Vision-Agents Open Vision Agents by Stream. Build Vision Agents quickly with any model or video provider. Uses Streams edge network for ultra-low latency. 项目地址: https://gitco…...
