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));