首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

问个小疑点。

2012-03-13 
问个小问题。。在使用timage控件时,如何知道它装入的图片类型?比如bmp,jpg,png等....[解决办法]只能查文件头

问个小问题。。
在使用timage控件时,如何知道它装入的图片类型?比如bmp,jpg,png等....

[解决办法]
只能查文件头了……
[解决办法]
判断各种类型文件标识位,bmp是以$4D42开头的,jpg是$FFD8开头
[解决办法]
网摘:

如果只是判断BMP、JPG、GIF图片,倒是有一个简单的方法,用数据流判断,因为BMP、GIF、JPG格式的文件流有标识符的,分别如下: 
名称 宽度 标识符

BMP 2位 BM

JPG 10位 chr($FF)+chr($D8)+chr($FF)+chr($E0)+chr($00)+chr($10)+'JFIF'

GIF 3位 GIF

通过这种方式可以判断。

当然通过DELPHI的系统的类也可以判断,用ClassName函数,但是不能判断GIF类型。

例如:

if Image1.Picture.Graphic<>nil then

Edit1.Text:=Image1.Picture.Graphic.ClassName;


[解决办法]
TImage在设计期装入图像后就保存在DFM文件中,不可能得到载入时的完整文件名,只能通过Image1.Picture.Graphic来判断其对象类型,比如if Image1.Picture.Graphic is TJPEGImage then

[解决办法]
如果是设计时加载的,一般只加载图像信息,文件名不会被记录,所以不可能得到了
[解决办法]

探讨
网摘:

如果只是判断BMP、JPG、GIF图片,倒是有一个简单的方法,用数据流判断,因为BMP、GIF、JPG格式的文件流有标识符的,分别如下:
名称 宽度 标识符

BMP 2位 BM

JPG 10位 chr($FF)+chr($D8)+chr($FF)+chr($E0)+chr($00)+chr($10)+'JFIF'

GIF 3位 GIF

通过这种方式可以判断。

当然通过DELPHI的系统的类也可以判断,用ClassName函数,但是不能判断GIF类型。

例如:

if Image1.Picture.Graphic <>nil then

Edit1.Text:=Image1.Picture.Graphic.ClassName;



[解决办法]
Image1.Picture.Graphic.ClassName里面可以看到加载的文件类型。

热点排行