我遇到了TransformedBitmap
的奇怪行为。
16位灰度TIFF图像(PixelFormats.Gray16)可以很好地加载到BitmapSource中,但是当使用包含缩放变换的TransformedBitmap缩放图像时,WIC将像素格式更改为PixelFormats.Gray32Float并且图像变暗。
这是原始的BitmapSource和TransformedBitmap:
我的线索是WIC出于某种原因对第二张图像应用了伽马校正,但是文档说Gray16和Gray32Float都使用1.0的伽玛,所以根本不应该进行伽马转换。
这是WIC中的错误吗?有没有办法解决TransformedBitmap修改我的图像内容?
答案 0 :(得分:0)
好的,我找到了解决方案。而是内联创建TransformedBitmap:
bitmapSource = new TransformedBitmap(bitmapSource, transform);
我在BeginInit()和EndInit()调用中使用了以下代码:
TransformedBitmap transformedBitmap = new TransformedBitmap();
transformedBitmap.BeginInit();
transformedBitmap.Source = bitmapSource;
transformedBitmap.Transform = transform;
transformedBitmap.EndInit();
bitmapSource = transformedBitmap;
幸运的是,生成的位图只是在颜色完整的情况下进行了转换。
像素格式仍会更改为Gray32Float,但可以使用FormatConvertedBitmap将其恢复为Gray16。