急急急!!!哪位大哥有获取各种图象的基本信息的代码,主要是高度信息! gif,jpg的图片的高度信息,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找一下gif,jpg的文件头的格式说明,就可以读取指定字节的数据得到你要的东东了 这里有大多文件格式的定义,供参考http://www.moon-soft.com/program/FORMAT/ 给你个JPG的{ 获取JPEG的宽度、高度等信息 }{ Copyright Kingron 2002 }function GetJPEGSize(FileName: string; var Width, Height: WORD): Boolean;const JPEG_FLAG_BEGIN = $D8FF; JPEG_FLAG_END = $D9FF; JPEG_FRAME = $C0FF;var FS: TFileStream; Flag1, Flag2: WORD; B: Byte; procedure SeekForFrame; type TSegHeader = packed record Flag: WORD; LenHi, LenLo: Byte; end; var Seg: TSegHeader; begin with Seg, FS do repeat Read(Seg, SizeOf(Seg)); if Flag <> JPEG_FRAME then Position := Position + MakeWord(LenLo, LenHi) - 2; until (Position >= Fs.Size) or (Seg.Flag = JPEG_FRAME); end;begin FS := TFileStream.Create(FileName, fmOpenRead); try { JPEG 文件开头必须为 FF D8,文件尾必须为 FF D9 } FS.Read(Flag1, SizeOf(Flag1)); FS.Position := FS.Size - 2; FS.Read(Flag2, SizeOf(Flag2)); Result := (Flag1 = JPEG_FLAG_BEGIN) and (Flag2 = JPEG_FLAG_END); if not Result then exit; { 不是合法的JPEG文件则退出 } FS.Position := 2; SeekForFrame; { 寻找JPEG的Frame段,即图像数据区 } FS.Read(B, SizeOf(B)); { Frame段段头后第一个Byte为数据精度 } FS.Read(B, SizeOf(B)); { 高度高字节 } WordRec(Height).Hi := B; FS.Read(B, SizeOf(B)); { 高度低字节 } WordRec(Height).Lo := B; FS.Read(B, SizeOf(B)); { 宽度高字节 } WordRec(Width).Hi := B; FS.Read(B, SizeOf(B)); { 宽度低字节 } WordRec(Width).Lo := B; finally FS.Free; end;end; 关于EXCEL导入到数据库 请教关于cxCheckGroup 求助,如何将一个文件夹下的文件复制到另一个文件夹下? 基于Delphi的“八皇后”问题动态实现 IdTCPServer,IdTCPClient问题 delph中DBLookupComboboxEh数据清空的问题 我是新手!想要入门电子版图书 急,解决问题马上就给分 请问:怎样定时启动程序? 诚请好心人关注:用RadioGroup ,Edit 实现对数据库的过滤查询,编译如下代码可通过,但运行时????? clientdataset做三层open时的奇怪问题? 管理网吧客户机的允许登陆和退出功能
http://www.moon-soft.com/program/FORMAT/
{ 获取JPEG的宽度、高度等信息 }
{ Copyright Kingron 2002 }
function GetJPEGSize(FileName: string; var Width, Height: WORD): Boolean;
const
JPEG_FLAG_BEGIN = $D8FF;
JPEG_FLAG_END = $D9FF;
JPEG_FRAME = $C0FF;
var
FS: TFileStream;
Flag1, Flag2: WORD;
B: Byte; procedure SeekForFrame;
type
TSegHeader = packed record
Flag: WORD;
LenHi, LenLo: Byte;
end;
var
Seg: TSegHeader;
begin
with Seg, FS do
repeat
Read(Seg, SizeOf(Seg));
if Flag <> JPEG_FRAME then
Position := Position + MakeWord(LenLo, LenHi) - 2;
until (Position >= Fs.Size) or (Seg.Flag = JPEG_FRAME);
end;begin
FS := TFileStream.Create(FileName, fmOpenRead);
try
{ JPEG 文件开头必须为 FF D8,文件尾必须为 FF D9 }
FS.Read(Flag1, SizeOf(Flag1));
FS.Position := FS.Size - 2;
FS.Read(Flag2, SizeOf(Flag2));
Result := (Flag1 = JPEG_FLAG_BEGIN) and (Flag2 = JPEG_FLAG_END);
if not Result then exit; { 不是合法的JPEG文件则退出 } FS.Position := 2;
SeekForFrame; { 寻找JPEG的Frame段,即图像数据区 }
FS.Read(B, SizeOf(B)); { Frame段段头后第一个Byte为数据精度 } FS.Read(B, SizeOf(B)); { 高度高字节 }
WordRec(Height).Hi := B;
FS.Read(B, SizeOf(B)); { 高度低字节 }
WordRec(Height).Lo := B; FS.Read(B, SizeOf(B)); { 宽度高字节 }
WordRec(Width).Hi := B;
FS.Read(B, SizeOf(B)); { 宽度低字节 }
WordRec(Width).Lo := B;
finally
FS.Free;
end;
end;