怎样识别图片文件类型

aloking 2005-04-04 09:07:58
怎么样快速识别一图片是jpg还是bmp
我现在是用一个TBitmap 和 TJpegImage 在load 哪个成功就是哪个
这样速度会不会慢?有没有更直接方法判断是什么图片
...全文
241 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
constantine 2005-04-07
读取文件头来判断
回复
aloking 2005-04-07
文件名后缀改了,怎么办。图象数据格式文件数据开头,就是不知道怎么用,我现在批量处理一批图片
jpg的,只能转成bmp处理完后,再转回jpg
现在的做法是,先转bmp,不管你是jpg还是bmp的,是bmp的用try,把异常包了。如果要是直接对文件分析知道是什么类型就好了
回复
ehom 2005-04-07
Stream.ReadBuffer(Buffer, 2);

if Buffer = $4D42 then
begin
//BMP
end
else if Buffer = $D8FF then
begin
//JPEG
end
else if Buffer = $4947 then
begin
//GIF
end
else if Buffer = $050A then
begin
//PCX
end
else if Buffer = $5089 then
begin
//PNG
end
else if Buffer = $4238 then
begin
//PSD
end
else if Buffer = $A659 then
begin
//RAS
end
else if Buffer = $DA01 then
begin
//SGI
end
else if Buffer = $4949 then
begin
//TIFF
end
else
begin
//...
end;
回复
aloking 2005-04-07
把jpg文件读到流里面
如果他是以FFD8开头的就说明是jpeg的图象了。
否则就是其他的文件。
Jpeg的文件都是以FFD8开头,以FFD9来结尾的。

ehom(?!)
我不在等着看你的示范代码嘛,呵呵
ExtractFileExt
晚点结贴
回复
ehom 2005-04-07
我第一次回复不是把答案给你了吗?
回复
aloking 2005-04-04
用Image 我也这么用了
回复
vfork 2005-04-04
直接用个Image控件,记住uses Jpeg单元!
然后Image1.Picture.LoadFromFile('路径');
我就是这么做的,bmp和jpg图都可以显示出来.
回复
ehom 2005-04-04
说TImage,不如说通过TPicture,TImage只是显示控件。

这里只是通过后缀来确定,通过注册相应的Graphic Class,会全局保存该Class和后缀的关联。如TJPEGImage和.jpg/.jpeg
回复
ehom 2005-04-04
绝大多数图像格式文件数据开头都有特征值可用来判断
回复
相关推荐
发帖
GAME,图形处理/多媒体
创建于2007-08-02

1166

社区成员

Delphi GAME,图形处理/多媒体
申请成为版主
帖子事件
创建了帖子
2005-04-04 09:07
社区公告
暂无公告