0

生の画像を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 を使用してメモリを節約できますが、おそらく時間を節約できます。

ありがとう

4

0 に答える 0