C# RGB图像和灰度图像互转的实现
更新时间:2023年08月18日 15:18:43 作者:wangnaisheng
在我们的图像类型教程中定义了RGB颜色模型和灰度格式,本文主要介绍了C# RGB图像和灰度图像互转的实现,文中通过代码介绍的非常清楚,具有一定的参考价值,感兴趣的可以了解一下
RGB图像转为灰度图像
using System; using System.Drawing; using System.Drawing.Imaging; namespace ConsoleApp { class Program { static void Main(string[] args) { // 创建RGB图像 Image img = new Bitmap("RGB图像路径"); // 获取RGB图像的Width和Height int width = img.Width; int height = img.Height; // 创建灰度图像 Image grayImg = new Bitmap(width, height); // 获取灰度图像的BytesPerPixel int grayBytesPerPixel = grayImg.GetPixelFormatSize(Color.Format32bppArgb); // 计算灰度图像的总像素数 int grayPixelCount = width * height; // 遍历RGB图像的每个像素,将其转为灰度值并写入灰度图像 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { Color c = img.GetPixel(x, y); int r = (int)(c.R / 255 * 255); int g = (int)(c.G / 255 * 255); int b = (int)(c.B / 255 * 255); int gray = (r + g + b) / 3; grayImg.SetPixel(x, y, Color.FromArgb(gray)); } } // 显示灰度图像 grayImg.Save("灰度图像路径"); } } }
灰度图像转为RGB图像
using System; using System.Drawing; using System.Drawing.Imaging; namespace ConsoleApp { class Program { static void Main(string[] args) { // 创建灰度图像 Image img = new Bitmap("灰度图像路径"); // 获取灰度图像的Width和Height int width = img.Width; int height = img.Height; // 创建RGB图像 Image rgbImg = new Bitmap(width, height); // 获取RGB图像的BytesPerPixel int rgbBytesPerPixel = rgbImg.GetPixelFormatSize(Color.Format32bppArgb); // 计算RGB图像的总像素数 int rgbPixelCount = width * height; // 遍历灰度图像的每个像素,将其转为RGB值并写入RGB图像 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { Color c = img.GetPixel(x, y); int gray = c.R; rgbImg.SetPixel(x, y, Color.FromArgb(gray, gray, gray)); } } // 显示RGB图像 rgbImg.Save("RGB图像路径"); } } }
到此这篇关于C# RGB图像和灰度图像互转的实现的文章就介绍到这了,更多相关C# RGB图像和灰度图像互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
.NET中的async和await关键字使用及Task异步调用实例
这篇文章主要介绍了.NET中的async和await关键字使用及Task异步调用实例,本文还包含了取消执行和显示进度的例子,需要的朋友可以参考下2014-07-07C#中使用async和await实现异步Udp通讯的示例代码
本文主要介绍了C#中使用async和await实现异步Udp通讯的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-07
最新评论