c# - 在 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);
但是最后一行出现了一个错误,就是:
内存不足异常
这段代码有什么问题?
解决方案
可能最好的方法是流式传输图像文件,因此如果文件很大,它不会占用太多内存。然后在尝试转换为之前检查文件格式是否正确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);
}
}
}
推荐阅读
- c++ - QtConcurrent:为什么releaseThread和reserveThread会导致死锁?
- marklogic - 错误 mapreduce.ContentWriter: XDMP-NOTXN: 没有标识符为 1796851315598328505 MLCP 的事务
- c# - HttpPostedFileBase 在使用模型发布时总是返回 null,但在没有模型的情况下可以正常工作
- c++ - 如何使用 boost:asio:ip:address IPV6 转换为 IPV4
- mysql - 我将如何在 SQL / SQLALCHEMY 中设计相互依赖的外键
- javascript - 在 React-Redux 中实时重新排序列表的最佳方法?
- qliksense - Qliksense ::计算尺寸
- twilio -
动词引发“发现以元素'Pay'开头的无效内容。'{Play”之一 - c# - 如何将 ExecuteScalar 与存储过程一起使用?
- bash - bash:bash 脚本给出了错误的替换错误