delphi提取文件中的ICO图标的问题,保存到本地全部都是32* 32的,如何判断图标尺寸?

2025-01-01 21:09:35
推荐回答(2个)
回答1:

你是想获得图标的话,建议使用专门的图标提取工具
AWicons Pro
║ 软件介绍: ║
║ Awicons 是一个搜索,创建,编辑,导入/导出,管理图标,光标,和小 ║
║ 型图片的强力工具! ║
║ 具体功能如下: ║
║ 1.全面支持Windows XP的图标! ║
║ 2.支持包括ico, cur, ani, png, gif, bmp, jpg在内的多种文件 ║
║ 格式! ║
║ 3.支持所有的颜色格式!包括mono, 16, 256, true-color, ║
║ true-color with alpha! ║
║ 4.最大可以创建128 x 128 大小的图标! ║
║ 5.可以自动对硬盘里的图标,光标和图片进行扫描! ║
║ 6.自带多种画笔,多种强力虑镜,使你的编辑 ║
║ 创建更加轻松自如! ║
║ 7.支持直接从dll,EXE文件中提取图标! ║
║ 8.支持图标库!

回答2:

提取文件中所有的图标(exe 或者 dll):
procedure GetIconFromFileEx(const f: string);
var
i: Integer;
Large, Small: HICON;
LIcon, SIcon: TIcon;
nIcons: Integer;
begin
LIcon := TIcon.Create;
SIcon := TIcon.Create;
nIcons := ExtractIconEx(PChar(f), -1, Large, Small, 2);
for i:=0 to nIcons-1 do
begin
ExtractIconEx(PChar(f), i, Large, Small, 2);
LIcon.Handle := Large;
SIcon.Handle := Small;
LIcon.SaveToFile(Format('%s\l%d.ico', [ExtractFilePath(f), i]));
SIcon.SaveToFile(Format('%s\s%d.ico', [ExtractFilePath(f), i]));
end;

FreeAndNil(LIcon);
FreeAndNil(SIcon);
end;