Entwickler-Ecke

Internet / Netzwerk - Image vom WebBrowser rauskopieren


F.Art - Do 06.02.03 13:25
Titel: Image vom WebBrowser rauskopieren
Wie kann man ein Bild aus dem WebBrowser woanders hin kopieren?


DaFox - Do 20.02.03 20:12
Titel: Re: Image vom WebBrowser rauskopieren
Hi.

Was verstehst Du unter hinkopieren? Entweder Du musst dann mit dem IE Cache arbeiten oder mit der Zwischenablage. Beides finde ich nicht gerade schön.

Deshalb nun zwei Möglichkeiten, die ich verwenden würde (genau kenne ich ja Deine Absichten nicht):


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Memo1.Lines.Clear;
  for i := 1 to Webbrowser1.OleObject.Document.Images.Length - 1 do
  begin
    Memo1.Lines.Add(Webbrowser1.OleObject.Document.Images.Item(i).Src);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i : Integer;
  Doc: IHTMLDocument2;
  Elements: IHTMLElementCollection;
  Elem : IHTMLElement;
begin
  Memo1.Lines.Clear;
  Doc := Webbrowser1.Document as IHTMLDocument2;
  Elements := (Doc.Images as IHTMLElementCollection) as IHTMLElementCollection;
  for i := 0 to Elements.Length-1 do
  begin
    Elem := Elements.Item(i, varEmpty) as IHTMLElement;
    Memo1.Lines.Add(Elem.outerHTML);
  end;
end;


Gruß,
Markus


F.Art - Do 20.02.03 21:09

OK ich werde mir das mal genauer an schauen.

Ich will eine HTML Datei abrufen und es wird imer ein anderes Bild angzeicht und das will ich in ein Bild oder Buton kopieren das mans im Projekt sieht. da der webbrowser nicht sichtbar ist.


F.Art - Fr 21.02.03 01:46

Ich schnall das noch nicht.

Ich möchte zB die Seite
http://www.delphi-forum.de/index.php
laden und slice-04.gif als Image laden.

Gibt es nicht ne möglichkeit das Bild direkt anzusprechen.

Bild.Picture:=WebBrowser??????.slice-04.gif


Anonymous - Fr 21.02.03 02:22

Wenn du willst, dann kannst du das Bild direkt runterladen. Vergiss also den Begriff "Bild" und frage wie du eine Datei aus dem Internet runterladen kannst.


F.Art - Fr 21.02.03 03:25

Das mit dem direkt runterladen würde nicht ganz klappen.
Es werden immer andere Bilder erscheinen.
Deswegen muss ich das per HTML auslesen.
Ich rufe dir HTML Seite auf und muss daher das Bild laden weil da der Name immer gleich bleibt.
Wenn man in der HTML ein Bild rein setzt wird immer für das Bild ein Objectname benutzt und der wird nicht geändert.

Ich hoffe ihr wisst was ich meine.
Ich nehme mal ein HTML Button als beispiel


Quelltext
1:
<input type="submit" value="OK">                    


submit bleibt immer gleich aber OK ändert sich immer.


F.Art - Mi 04.06.03 22:56

Ich könnte noch etwas mehr Hilfe gebrauchen.
Ich möchte ein Bild was per WebBrowser geladen wird aus dem Cache in ein Image von Delphi kopieren.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
WebBrowser.Navigate('http://www.fategate.de.vu');
repeat
Application.ProcessMessages;
Sleep(0);
until WebBrowser.ReadyState = READYSTATE_COMPLETE;
Document:= WebBrowser.Document;


Der HTML Quelltext des Bildes:

Quelltext
1:
<IMG src="Links/FateGate.gif" width="691" height="122"  border="0">                    


Wie realisiere ich das?


toms - Do 05.06.03 08:34

Hi,

Habe mal eine Funktion geschrieben, welcher man eine URL übergeben
kann und dann den Pfad zur lokale Datei (im Cache) erhält.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
uses
  WinInet;

function GetCachedFileFromURL(strUL: stringvar strLocalFile: string): boolean;
var
  lpEntryInfo: PInternetCacheEntryInfo;
  hCacheDir: LongWord;
  dwEntrySize: LongWord;
  dwLastError: LongWord;
begin
  Result := False;
  dwEntrySize := 0;
  FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
  GetMem(lpEntryInfo, dwEntrySize);
  hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
  if (hCacheDir <> 0and (strUL = lpEntryInfo^.lpszSourceUrlName) then
    begin
      strLocalFile := lpEntryInfo^.lpszLocalFileName;
      Result := True;
    end;
  FreeMem(lpEntryInfo);
  if Result = False then
  repeat
    dwEntrySize := 0;
    FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
    dwLastError := GetLastError();
    if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
    begin
      GetMem(lpEntryInfo, dwEntrySize);
      if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then
      begin
        if strUL = lpEntryInfo^.lpszSourceUrlName then
        begin
          strLocalFile := lpEntryInfo^.lpszLocalFileName;
          Result := True;
          Break;
        end;
      end;
      FreeMem(lpEntryInfo);
    end;
  until (dwLastError = ERROR_NO_MORE_ITEMS);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  strLocalFile: string;
begin
  if GetCachedFileFromURL('http://www.abc.com/xyz.gif', strLocalFile) then
    ShowMessage(strLocalFile);
end;


F.Art - Do 05.06.03 10:39

OK das klappt schonmal ganz gut.


Delphi-Quelltext
1:
Image1.Picture.LoadFromFile(strLocalFile);                    


Wie kann ich dann das Bild im Projekt anzeigen lassen?
So wie oben geht es nicht.
Gibt es noch ne Kombonente womit man alle Bild Formate anzeigen lassen kann wie anigif und so?


F.Art - Di 10.06.03 11:34

Er zeigt zwar das JPG an wo es hingespeichert wurde aber es wird nicht komplett gespeichert. Man kann das Bild nicht öffnen. Wer kann mir weiter helfen?