如何判断图片是否损坏?

tiandaoyifang 2007-12-25 09:06:48
在调用Image.FromFile()前,若图片有损坏,则会抛出内存不足的异常,
用什么方法可以检测图片是否已经损坏?以防止程序抛出异常?
...全文
1810 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsk198726 2011-03-09
  • 打赏
  • 举报
回复
我怎么没明白呀 看你们的程序也检测不出来图片是否损坏
zxjay 2007-12-25
  • 打赏
  • 举报
回复
若分析文件结构,该如何分析
这样非常麻烦,浅层的分析通过也不能保证图片未损坏

为什么不用抛出异常?
异常效率是低,但异常不是经常发生的

只要优雅的处理异常就行了
haiwangstar 2007-12-25
  • 打赏
  • 举报
回复
“若分析文件结构,该如何分析?”
比较难一些,你要搞清楚不同图像类型的规范,如BMP,JPG,PNG等。主要是文件头,如位图,你可以读取文件头到预定义的WINDOWS位图的一个结构中,进行判断。但图像内容应该是无法判断的。
tiandaoyifang 2007-12-25
  • 打赏
  • 举报
回复
抛异常可以确定图片损坏,目的是不抛异常就确定图片损坏
若分析文件结构,该如何分析?
tiandaoyifang 2007-12-25
  • 打赏
  • 举报
回复
使用Bitmap bmp = new Bitmap(path)
若path所指定的图片是损坏的,同样会抛异常(参数无效),程序同样终止,和用Image.FromFile(path)是一样的
zxjay 2007-12-25
  • 打赏
  • 举报
回复
你的代码在
try
{
...
}
catch
{
...
}
也行
zxjay 2007-12-25
  • 打赏
  • 举报
回复

try
{
Bitmap bmp = new Bitmap(path);
if (bmp == null)
{
//图片损坏
}
}
catch //(Exception ex)
{
//图片损坏
}
mohugomohu 2007-12-25
  • 打赏
  • 举报
回复
上次我的程序就是一直抛异常内存不足,找不到错误.太郁闷了.

判断图片是否损坏,直接用windows传真图片察看器预览啊哈哈
gimse7en 2007-12-25
  • 打赏
  • 举报
回复
mark
tiandaoyifang 2007-12-25
  • 打赏
  • 举报
回复
在C#中,当出现某个异常错误条件时,就会创建一个异常对象。这个对象包含有助于跟踪问题的信息。Microsoft在.NET中定义了大量的异常类。对于.NET类来说,一般的异常类System.Exception派生于System.Object,通常不在代码中抛出这个System.Exception对象,因为它无法确定错误情况的本质。而程序中的异常是System.OutOfMemoryException,System.OutOfMemory派生于ExceptionSystem.SystemException,异常处理机制本生很复杂,用异常判断图片有损坏是可行的,就是感觉有点不好,分析文件结构更复杂,就是不知道有没有更好的方法?
zxjay 2007-12-25
  • 打赏
  • 举报
回复
return null;就没必要了吧,去掉可以继续处理其他未损坏的图片

这样应该没大问题
tiandaoyifang 2007-12-25
  • 打赏
  • 举报
回复
try
{
...
Image a;
for(...)
{
try
{
a=Image.FromFile(path);
}
catch
{
File.Delete(ImageLoadPath);
return null;
}
}
...
}
catch(Exception e)
{
throw(e);
}
能解决问题,就是不知两个try、catch给有影响及冲突?

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧