Delphi儲存網頁中的圖片

一劍平江湖發表於2013-12-10

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), T^, 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(00, Image1.Picture.Graphic);
  bmp.SaveToFile(SaveDialog1.FileName);
  bmp.Free;
end

相關文章