我有一个 .NEF 图像。我安装了编解码器,然后使用下面的代码来显示它:
BitmapDecoder bmpDec = BitmapDecoder.Create(new Uri(@"C:\Temp\Img0926.nef"), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);
BitmapSource srs = bmpDec.Frames[0];
this.imgDisplayed4.Source = srs;
this.imgDisplayed4.Stretch = Stretch.UniformToFill;
- imgDisplayed4 是图像控件。
然后使用以下代码创建 bmp 并保存:
Bitmap bmp = new Bitmap(srs.PixelWidth, srs.PixelHeight, System.Drawing.Imaging.PixelFormat.Format48bppRgb);
System.Drawing.Imaging.BitmapData data = bmp.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format48bppRgb);
srs.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride);
bmp.UnlockBits(data);
bmp.Save(@"C:\Temp\Images\Img0926-1.bmp");
它保存了 bmp 文件,但是,bmp 中的颜色似乎有一些变化。我附上了3个屏幕截图。第一个是Windows Photo Viewer 显示的保存的bmp 文件,第二个是原始.NEF 图像,第三个是图像控件中显示的图像。
我们可以看到它们都是相似的。但是,第 2 和第 3 个颜色相似,并且与第 1 个不同。
我搜索了很多,我能找到的都与我正在做的类似。但是,它们都是针对 Format32bppRgb 的。问题可能是因为我使用的图像是 Format48bppRgb 吗?有人知道吗?以及如何解决这个问题?
谢谢