C#编写 32 位和 24 色位图(Bitmap)转 8 位灰度图像函数

1.C#编写 32 位和 24 色位图(Bitmap)转 8 位灰度图像函数
2.8 位灰度图生成直方图,可在 Chart 中显示

C#中,你可以使用System.Drawing命名空间下的Image类和Bitmap类来创建16像素值(通常表示为Int16类型)的灰度图像。这里是一个简单的示例: ```csharp using System.Drawing; using System.Drawing.Imaging; public Bitmap CreateGrayscale16BitImage(int width, int height) { // 创建一个16深度的位图深度为2 bytes对应16 Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb); // 创建一个Graphics对象,用于绘制和操作图像 Graphics graphics = Graphics.FromImage(bitmap); // 创建一个ColorMatrix,用于将RGB颜换为灰度 ColorMatrix colorMatrix = new ColorMatrix( new float[][] { new float[] {0.299f, 0.587f, 0.114f, 0, 0}, new float[] {0.596f, 0.301f, 0.114f, 0, 0}, new float[] {0.211f, 0.523f, 0.312f, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {0, 0, 0, 0, 1} }); // 创建一个ImageAttributes对象,并设置其颜矩阵 ImageAttributes imageAttributes = new ImageAttributes(); imageAttributes.SetColorMatrix(colorMatrix); // 使用Graphics对象和ImageAttributes绘制矩形填充整个图像为灰 graphics.FillRectangle(Brushes.Gray, 0, 0, width, height, imageAttributes); return bitmap; } // 调用函数创建16灰度图像 int width = 640; int height = 480; Bitmap grayscaleBitmap = CreateGrayscale16BitImage(width, height); grayscaleBitmap.Save("grayscale_16bit_image.png"); ``` 在这个示例中,我们首先创建了一个24位图,然后通过ColorMatrix将其换为灰度,最后保存为16的PNG格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值