我正在尝试加载32位TIFF并读取像素的RGBA值。我尝试过使用LibTiff.Net,但是在尝试加载时遇到了这个错误:
“抱歉,无法处理32位样本的图像”
有谁知道在C#中实现这一目标的方法?我不想减少像素深度,因为这些图像包含将用于科学计算的数据。
感谢您的帮助。
编辑: 例如:
var stream = File.Open(fileName, FileMode.Open);
TiffBitmapDecoder tiffDecoder = new TiffBitmapDecoder( stream,
BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreImageCache,
BitmapCacheOption.None);
stream.Dispose();
BitmapSource bmpSource = tiffDecoder.Frames[0];
byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmpSource));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
这给我以下错误:
{"The handle is invalid. (Exception from HRESULT: 0x80070006 (E_HANDLE))"}
在线
encoder.Frames.Add(BitmapFrame.Create(bmpSource));