打开32位浮点图像会导致OutOfMemoryException

时间:2017-02-02 10:50:46

标签: c# image floating-point

我在Visual Studio 2017 RC中运行控制台应用程序。执行下面的代码时,我得到System.OutOfMemoryException: 'Out of memory.'例外。

我试图加载的图像是一个32位的浮动图像 加载16位浮点图像可以正常工作。

我已尝试在 Configuration Manager 中将 Plattform 类型设置为x64

using System.Drawing;

namespace ConsoleAppImageTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string PathToFile = @"D:\img\rgb32bitF.tiff";
            Image img = Image.FromFile(PathToFile);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

尝试使用LibTiff.NET处理TIFF图像。

答案 1 :(得分:0)

This answer提供了打开(32位)tiff的解决方案(由M Adeel Khalid建议)。

添加 PresentationCore 引用和using System.Windows.Media.Imaging;

 string PathToFile = @"D:\img\rgb32bitF.tiff";
 Stream imageStreamSource = new FileStream(PathToFile, FileMode.Open, FileAccess.Read, FileShare.Read);
 TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
 BitmapSource bitmapSource = decoder.Frames[0];