1

2 つの tiff 画像があり、1 つは白黒、もう 1 つはグレースケール 8 です。

それらを開こうとすると、画像ボックスに表示する必要があります。

Image.FromFile("path");

白黒のものは問題なく開きますが、グレースケールのものは例外です:「メモリ不足」

これは、WinXP SP3 マシンでコードを実行した場合にのみ発生します。Windows 7 の同僚は、どちらの場合も問題はありません。

何か案は?

詳細: MS Paint と標準の Microsoft Image Viewer ではグレースケール イメージを開くことができませんが、Office Picture Manager では開くことができます。

Windows 7 は、任意のソフトウェアで画像を開くことができます

私はこの一時的な解決策を持っていますが、最善ではないと思います:

System.Windows.Media.Imaging.BitmapImage bImg = null;

using (var fs = new FileStream(dlg.FileName, FileMode.Open))
{
    bImg = new System.Windows.Media.Imaging.BitmapImage();
    bImg.BeginInit();
    bImg.StreamSource = fs;
    bImg.EndInit();
}

if (bImg.Format == System.Windows.Media.PixelFormats.Gray8)
{
    Bitmap bitmap;

    using (MemoryStream outStream = new MemoryStream())
    {
        BitmapEncoder enc = new BmpBitmapEncoder();
        enc.Frames.Add(BitmapFrame.Create(bImg));
        enc.Save(outStream);
        bitmap = new System.Drawing.Bitmap(outStream);
    }
    AssignImage(bitmap);
}
else
    AssignImage(Image.FromFile(dlg.FileName));
4

1 に答える 1

2

Image.FromFile は、ネイティブ GDI 呼び出しを使用してイメージを読み込みます。

サポートされていない TIFF ファイルをロードすると、メモリ不足の例外が発生するという報告が多数あります。

http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/582c0a29-97ef-4136-8a7f-81eb1b1f1c94/

http://www.pcreview.co.uk/forums/opening-tiff-file-throws-out-memory-exception-t3105542.html

TIFF ファイル形式には多くのエンコード オプションがあり、そのすべてが Windows で単純にサポートされているわけではありません。TIFF ファイルは、コンテンツをさまざまな方法で圧縮できるという点で AVI ファイルに少し似ています。Windows 7 では、他の形式のサポートが追加されている可能性があります。

TIFF ファイルのエンコード オプションを変更することはできますか?

于 2012-04-30T11:01:10.303 に答える