首页 > 解决方案 > 在 C# 中将文件转换为位图

问题描述

我编写此代码以从文件夹中读取文件directory(@"D:\\test\\ISIC_2020_Training_JPEG"),然后将每个文件转换为 c# 中的位图

foreach (string img in Directory.EnumerateFiles(@"D:\\test\\ISIC_2020_Training_JPEG"))
    Bitmap  bmp = new Bitmap(img);

但是最后一行出现了一个错误,就是:

内存不足异常

这段代码有什么问题?

标签: c#imagefiledirectorybitmap

解决方案


可能最好的方法是流式传输图像文件,因此如果文件很大,它不会占用太多内存。然后在尝试转换为之前检查文件格式是否正确Bitmap,希望这会有所帮助:

Bitmap bitmap;
Image image;
foreach (string imgFile in Directory.EnumerateFiles(@"D:\test\ISIC_2020_Training_JPEG"))
{
    using (Stream bmpStream = File.Open(imgFile, FileMode.Open))
    {
        image = Image.FromStream(bmpStream);
        if (ImageFormat.Jpeg.Equals(image.RawFormat)) // Check it's the correct format
        {
            bitmap = new Bitmap(image);
        }
    }
}

推荐阅读