这是我的问题。请耐心等待我做一点解释:
我正在将 tiff 图像读入缓冲区;我的 tiff 的每个像素都由一个 ushort(16 位数据,非负数)表示。
我的图像大小为 64*64 = 4096。当我的 tiff 加载到缓冲区时,缓冲区长度因此为 8192(是 4096 的两倍)。我猜这是因为在我的缓冲区中,计算机使用 2 个字节来存储单个像素值。
我想获取任何特定像素的值,在这种情况下,我应该将每 2 个字节组合成 1 个 ushort 吗?
例如:00000000 11111111 -> 0000000011111111?
这是我的代码:
public static void LoadTIFF(string fileName, int pxlIdx, ref int pxlValue)
{
using (Tiff image = Tiff.Open(fileName, "r"))
{
if (image == null)
return;
FieldValue[] value = image.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
byte[] buffer = new byte[image.StripSize()];
for (int strip = 0; strip < image.NumberOfStrips(); strip++)
image.ReadEncodedStrip(strip, buffer, 0, -1);
// do conversion here:
//ushort bufferHex = BitConverter.ToUInt16(buffer, 0);
image.Close();
}
}
如何读取 byte[] 缓冲区以确保我可以获得 16 位 ushort 像素值?
谢谢