代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Delphi
】
返回Gif图片的尺寸
作者:
jellyvice
/ 发布于
2013/12/3
/
1362
function GetGIFSize(const FileName: string): Types.TSize; type // GIF header record TGIFHeader = packed record Sig: array[0..5] of AnsiChar; // signature bytes ScreenWidth, ScreenHeight: Word; // logical screen width and height Flags: Byte; // various flags Background: Byte; // background colour index Aspect: Byte; // pixel aspect ratio end; // GIF image block header record TGIFImageBlock = packed record Left, Top: Word; // image top left Width, Height: Word; // image dimensions Flags: Byte; // flags and local colour table size end; const cSignature: PAnsiChar = 'GIF'; // gif image signature cImageSep = $2C; // image separator byte var FS: Classes.TFileStream; // stream onto gif file Header: TGIFHeader; // gif header record ImageBlock: TGIFImageBlock; // gif image block record BytesRead: Integer; // bytes read in a block read Offset: Integer; // file offset to seek to B: Byte; // a byte read from gif file DimensionsFound: Boolean; // flag true if gif dimensions have been read begin Result.cx := 0; Result.cy := 0; if (FileName = '') or not SysUtils.FileExists(FileName) then Exit; FS := Classes.TFileStream.Create( FileName, SysUtils.fmOpenRead or SysUtils.fmShareDenyNone ); try // Check signature BytesRead := FS.Read(Header, SizeOf(Header)); if (BytesRead <> SizeOf(TGIFHeader)) or (SysUtils.StrLComp(cSignature, Header.Sig, 3) <> 0) then // Invalid file format Exit; // Skip colour map, if there is one if (Header.Flags and $80) > 0 then begin Offset := 3 * (1 shl ((Header.Flags and 7) + 1)); if Offset >= FS.Size then Exit; FS.Seek(Offset, Classes.soFromBeginning); end; DimensionsFound := False; FillChar(ImageBlock, SizeOf(TGIFImageBlock), #0); // Step through blocks FS.Read(B, SizeOf(B)); while (FS.Position < FS.Size) and (not DimensionsFound) do begin if B = cImageSep then begin // We have an image block: read dimensions from it BytesRead := FS.Read(ImageBlock, SizeOf(ImageBlock)); if BytesRead <> SizeOf(TGIFImageBlock) then // Invalid image block encountered Exit; Result.cx := ImageBlock.Width; Result.cy := ImageBlock.Height; DimensionsFound := True; end; FS.Read(B, SizeOf(B)); end; finally FS.Free; end; end;
试试其它关键字
Gif图片
同语言下
.
多边形面积
.
限定软件使用时间
.
获取磁盘空间大小
.
窗口文字淡入淡出渐变效果
.
创建开机启动项
.
检测并枚举系统安装的打印机
.
实现保存和读取图片
.
字符串分隔函数
.
将BMP格式图形转化为JPG格式
.
解析FTP地址
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
jellyvice
贡献的其它代码
(
28
)
.
返回双精度浮点数数组的最大值2
.
返回一个双精度浮点数数组的最大值
.
检查指定数字是否是质数
.
两个数的最大公约数
.
把一个缓冲区里的字节输出成16进制表示格式
.
Graphic转换成Bitmap
.
获取一个图标或光标的热点位置
.
返回Gif图片的尺寸
.
返回指定bitmap图片的尺寸
.
检查系统中是否包含指定的字体
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3