C#技能01 | 损坏图片检查

Posted 运筹优化与地理信息

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#技能01 | 损坏图片检查相关的知识,希望对你有一定的参考价值。

在图像处理中面对大量的图像,里边可能存在个别损坏的图像,本博文主要使用C#进行损坏图像识别。

1 获取指定目录下的所有文件名称

 /// <summary> /// 迭代获取选择指定文件夹下的所有文件名 /// </summary> /// <param name="srcDir">文件目录</param> /// <param name="selFileNames">文件名存储列表</param> public void getAllFileNames(string srcDir, List<string> selFileNames) { string[] dirs = Directory.GetDirectories(srcDir); selFileNames.AddRange(Directory.GetFiles(srcDir));  foreach(string dir in dirs) { getAllFileNames(dir, selFileNames); } }

2 检查图片是否损坏

 /// <summary> /// 对列表中图片文件进行检查 /// </summary> /// <param name="liFileFullName">图片文件列表</param> /// <param name="sw">输出流</param> public void CheckFile(List<string> liFileFullName, StreamWriter sw) { foreach (string fileFullName in liFileFullName) { if (fileFullName.Contains("jpg") || fileFullName.Contains("bmp") || fileFullName.Contains("gif")) { try { Bitmap bmp = new Bitmap(fileFullName); if (bmp == null) { sw.WriteLine(fileFullName); } } catch (Exception ex) { //图片损坏输出到日志 sw.WriteLine(fileFullName); } } } }

3 批量调用

 /// <summary> /// 检查 /// </summary> /// <param name="srcDir"></param> /// <param name="ouTxt"></param> public void check(string srcDir, string ouTxt) { StreamWriter sw = new StreamWriter(ouTxt); List<string> allFileNames = new List<string>(); getAllFileNames(srcDir, allFileNames); CheckFile(allFileNames, sw); sw.Close(); sw.Dispose(); }


以上是关于C#技能01 | 损坏图片检查的主要内容,如果未能解决你的问题,请参考以下文章