.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枚添付しました。1 つ目は Windows フォト ビューアーによって表示される保存された bmp ファイル、2 つ目は元の .NEF 画像、3 つ目はイメージ コントロールに表示される画像です。
それらはすべて似ていることがわかります。ただし、2枚目と3枚目は似たような色で、1枚目とは異なります。
私はたくさん検索しましたが、見つけることができるのは私がやっていることと似ています。ただし、それらはすべて Format32bppRgb 用です。問題は、使用している画像が Format48bppRgb であるためでしょうか? 誰でも何か考えがありますか?これを修正する方法は?
ありがとう