加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi保存网页中的图片

发布时间:2020-12-15 10:02:10 所属栏目:大数据 来源:网络整理
导读:1. 获取网页中的静态图片 网页中的静态图片加载后会保存在IE缓存区内,所以只要获取图片URL在IE缓存区中对应的本地文件名,就可以使用Win32API函数:CopyFile拷贝到指定的文件名就可以了,获取URL对应本地文件名的函数如下: uses? WinInet ?function GetLo

1. 获取网页中的静态图片

  网页中的静态图片加载后会保存在IE缓存区内,所以只要获取图片URL在IE缓存区中对应的本地文件名,就可以使用Win32API函数:CopyFile拷贝到指定的文件名就可以了,获取URL对应本地文件名的函数如下:

uses?WinInet

?function GetLocalFileNameFromIECache(url:string; var LocalFileName:string):DWORD;
var
? D: Cardinal;
? T: PInternetCacheEntryInfo;
begin
? result := S_OK;
? D := 0;
? T:=nil;
? GetUrlCacheEntryInfo(PChar(Url),T^,D);
? Getmem(T,D);
? try
??? if (GetUrlCacheEntryInfo(PChar(Url),D)) then
????? LocalFileName:=T^.lpszLocalFileName
??? else
????? Result := GetLastError;
? finally
??? Freemem(T,D);
? end;
end;

2. 获取网页中的动态图片

??? 网页中动态生成的图片有些并不保存在IE缓存区中,这种图片只能使用TWebBrowser控件获取,下面的代码将网页中的第一幅图片复制到Windows剪贴板,并用Image1控件显示:

uses?MsHtml,ActiveX,ClipBrd

procedure?TForm1.Button1Click(Sender: TObject);
var
? iIndex: Integer;
? Rang:IHTMLControlRange;
? ImgSel: IHTMLControlElement;
begin
? iIndex := 0;?//所需的图片在网页中出现的顺序
? Rang := ((IHTMLDocument2(WebBrowser1.Document).body as HTMLBody).createControlRange) as IHTMLControlRange;
? ImgSel := IHTMLDocument2(WebBrowser1.Document).images.item(iIndex,EmptyParam)as IHTMLControlElement;
? Rang.add(ImgSel);
? Rang.execCommand('Copy',False,0);
? Image1.Picture.Assign(ClipBoard);
end;

initialization
? OleInitialize(nil);
finalization
? OleUninitialize;

end.

3. 将Image1控件中的图像保存为BMP文件

procedure?TForm1.Button2Click(Sender: TObject);
var
? Bmp: TBitmap;
begin
??if not?
SaveDialog1.Execute?then?Exit;
? bmp := TBitmap.Create;
? bmp.Width := Image1.Width;
? bmp.Height := Image1.Height;
? bmp.Canvas.Draw(0,?end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读