在Delphi的TWebbrowser中保存特定图像?

时间:2014-01-10 13:08:01

标签: delphi twebbrowser

我需要在Twebbrowser中保存特定图像,但不要重新加载;图像已加载。我知道如何获取图像的源URL并下载它,但我真正需要的是保存已经加载到浏览器中的图像。有办法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

似乎没有直接的方法将图像元素保存到文件中,所以我会从缓存中获取它。要通过给定资源URL从IE缓存复制文件,您可以使用如下函数。 URL参数是HTML标记的src属性值,FileName是目标文件名:

uses
  WinInet;

procedure SaveInetResourceToFile(const URL, FileName: string);
var
  BufferSize: DWORD;
  CacheEntry: PInternetCacheEntryInfo;
begin
  if not RetrieveUrlCacheEntryFile(PChar(URL), TInternetCacheEntryInfo(nil^),
    BufferSize, 0) then
  begin
    if GetLastError = ERROR_INSUFFICIENT_BUFFER then
    begin
      GetMem(CacheEntry, BufferSize);
      try
        if RetrieveUrlCacheEntryFile(PChar(URL), CacheEntry^, BufferSize, 0) then
        try
          Win32Check(CopyFile(CacheEntry.lpszLocalFileName, PChar(FileName),
            False));
        finally
          Win32Check(UnlockUrlCacheEntryFile(PChar(URL), 0));
        end
        else
          RaiseLastOSError;
      finally
        FreeMem(CacheEntry);
      end;
    end
    else
      RaiseLastOSError;
  end;
end;