C#中如何判断文件是否是图片
背景
最近自己在做一个功能的时候,需要判断一个文件是否是真的图片,也就是说类似通过修改后缀名的方法伪造的图片需要识别出来。拿到这个功能的时候,自己首先想到的是C#是否有相关的类可以判断是否是图片,例如通过给出文件路径,用相关的方法是否可以构造出一个image对象;如果没有对应的方法的话,那么自己只能通过文件的内容格式来进行判断,也就是说自己通过读取文件的内容,用相关的数据做判断;
代码实现
- 通过通过Image类的相关方法构建一个对象,如果是真的图片,那么可以构建对象成功,否则失败;
public static bool IsRealImage(string path)
{
try
{
Image img = Image.FromFile(path);
Console.WriteLine("\nIt is a real image");
return true;
}
catch (Exception e)
{
Console.WriteLine("\nIt is a fate image");
return false;
}
}
- 通过文件内容来进行判断,在这里我只判断是否是JPG和PNF文件,其他格式的图片的类似
public static bool JudgeIsRealSpecialImage(string path)
{
try
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(fs);
string fileType;
byte buffer;
buffer = reader.ReadByte();
fileType = buffer.ToString();
buffer = reader.ReadByte();
fileType += buffer.ToString();
reader.Close();
fs.Close();
if (fileType == "13780" || fileType == "255216")
{
Console.WriteLine("\nIt is a real jpg or png files");
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
return false;
}
}
作者:醉曦
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】