gpt4 book ai didi

c# - 如何在 C# 中仅读取像素数据而不是 16 位图像的元数据?

转载 作者:行者123 更新时间:2023-11-30 16:38:57 24 4
gpt4 key购买 nike

我有 16 位深度图像,我只想读取像素数据并将其存储到 byte[]

我尝试了以下代码:

FileInfo fileInfo = new FileInfo("C:\\Image stitch API\\Temp\\output.tif");
byte[] data = new byte[fileInfo.Length];

我还尝试了以下方法:

Image img;
img = Image.FromFile("C:\\Image stitch API\\Temp\\output.tif");
ImageConverter ic = new ImageConverter();
byte[] data = (byte[])ic.ConvertTo(img, typeof(byte[]))

这里所有数据都来自图像,但我只需要像素数据?

有人可以帮忙吗?

最佳答案

如果您可以将图像加载为位图,则很容易获取像素信息,如下所示。

    Bitmap bitmap = new Bitmap("somefile.ext");
Color color = bitmap.GetPixel(x,y)

GetPixel() 将返回 Color(结构)类型,您可以获取单个 channel 值作为字节,如下所示。

    byte g = slateBlue.G;
byte b = slateBlue.B;
byte r = slateBlue.R;
byte a = slateBlue.A;

关于您的评论,我建议您使用 Netvips以字节数组形式操作图像(它比 system.drawing 更好更快)。通过这样做,您可以获得如下字节数组形式的图像波段。

    var imageBands = inputImage.Bandsplit();
var R = imageBands [0];
var B = imageBands [1];
var G = imageBands [2];

如果您不想切换库,您可以使用 System.Drawing 获取字节数组,如下所示。

byte[] image = new[] {R, B, G};

关于c# - 如何在 C# 中仅读取像素数据而不是 16 位图像的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com