我的要求为:用idHttp下载图片,给image数组
有2个问题:
1、我暂时只知道处理jpg(TJPEGImage),bmp(TBitMap)格式的类,不知道其他通用的图片格式的类是什么,要引用什么单元?
2、我用for循环为image数组加载时,响应巨慢!
----------------------------------------------------
我的函数为:
function LoadWebPicture(var ms: TMemoryStream; var IdHTTP: tidhttp; var img: TImage; URL: string): boolean;
var
jpg: TJPEGImage;
bmp: TBitMap;
Ext: string;
begin
//URL如http://www.com.com/admin/admin.jpg
try
Result := False;
if ms = nil then ms := TMemoryStream.Create;
if ms.Size >0then ms.Clear;
IdHTTP.Get(URL, ms);
ms.Position := 0;
//文件类型
Ext := Copy(URL, LastDelimiter('.', URL) + 1, 4);
if Ext = 'bmp' then begin
bmp := TBitMap.Create;
bmp.LoadFromStream(ms);
img.Picture.Assign(bmp);
Result := true;
end
else if Ext = 'jpg' then begin //如果是jpg图片
jpg := TJPEGImage.Create;
jpg.LoadFromStream(ms);
img.Picture.Assign(jpg);
Result := true;
end;
except
end;
end;
有2个问题:
1、我暂时只知道处理jpg(TJPEGImage),bmp(TBitMap)格式的类,不知道其他通用的图片格式的类是什么,要引用什么单元?
2、我用for循环为image数组加载时,响应巨慢!
----------------------------------------------------
我的函数为:
function LoadWebPicture(var ms: TMemoryStream; var IdHTTP: tidhttp; var img: TImage; URL: string): boolean;
var
jpg: TJPEGImage;
bmp: TBitMap;
Ext: string;
begin
//URL如http://www.com.com/admin/admin.jpg
try
Result := False;
if ms = nil then ms := TMemoryStream.Create;
if ms.Size >0then ms.Clear;
IdHTTP.Get(URL, ms);
ms.Position := 0;
//文件类型
Ext := Copy(URL, LastDelimiter('.', URL) + 1, 4);
if Ext = 'bmp' then begin
bmp := TBitMap.Create;
bmp.LoadFromStream(ms);
img.Picture.Assign(bmp);
Result := true;
end
else if Ext = 'jpg' then begin //如果是jpg图片
jpg := TJPEGImage.Create;
jpg.LoadFromStream(ms);
img.Picture.Assign(jpg);
Result := true;
end;
except
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货