生の画像をtifに変換する方法があります。raw 画像のコーデックがインストールされます。
private void SaveTiff(string filename, string output)
{
try
{
System.Windows.Media.Imaging.BitmapDecoder bmpDec = System.Windows.Media.Imaging.BitmapDecoder.Create(new Uri(filename), System.Windows.Media.Imaging.BitmapCreateOptions.IgnoreColorProfile, System.Windows.Media.Imaging.BitmapCacheOption.None);
System.Windows.Media.Imaging.BitmapSource srs = bmpDec.Frames[0];
if (Path.GetExtension(output).Equals(".tif", StringComparison.CurrentCultureIgnoreCase))
{
using (FileStream stream = new FileStream(output, FileMode.Create))
{
System.Windows.Media.Imaging.TiffBitmapEncoder encoder = new System.Windows.Media.Imaging.TiffBitmapEncoder();
encoder.Compression = System.Windows.Media.Imaging.TiffCompressOption.None;
encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(srs));
encoder.Save(stream);
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
それは正常に動作します。ただし、画像サイズは 48bppRGB で 4928x3264 です。平均的な PC (16GB、4 コア、3.1GHZ) では、変換に 20 秒以上かかります。速くする方法はありますか?colordepth と dpi は変更できますが、tif は圧縮されていない必要があります。色深度、dpi、さらにはサイズを変更しようとしましたが、それでも同じくらいの時間がかかります。私の推測では、生の画像を最初にデコードする必要があり、コーデックのために時間がかかるためです。これは正しいです?他の提案はありますか?
BitmapImage を使用する場合、DecodePixelWidth を使用してメモリを節約できますが、おそらく時間を節約できます。
ありがとう