RGB图像转为灰度图像
cs
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图像
cs
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图像路径");
}
}
}