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 | 损坏图片检查的主要内容,如果未能解决你的问题,请参考以下文章
对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段