![]() |
TWebBrowser Image (PNG) auslesen + anzeigen
Hallo,
Ich will von einer seite ein bild vom Typ PNG auslesen und in einem TImage ausgeben Der Dateiname von der PNG datei ist immer unterschiedlich. Danke im Vorraus Mephi |
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Dazu gehst du über den DOM des IE (MSHTML.pas einbinden und TWEbBrowser.Document nach IHTML2Document casten) und dann die Imgages-Auflistung durchsuchen.
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
habe mich noch nicht so mit Image beschäftigt kannst du mir vllt eine ausführliche Methode geben
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Probiers mal so:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, mshtml, ActiveX, winInet, pngimage, gifimage, jpeg; type TForm3 = class(TForm) WebBrowser1: TWebBrowser; ListBox1: TListBox; Image1: TImage; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.dfm} function GetURLCacheFile(AURL : String; const AData : TMemoryStream) : Integer; var ice : PInternetCacheEntryInfo; iceSize : Cardinal; CacheEntry : Cardinal; DataSize : Cardinal; Buffer : Pointer; begin iceSize:=MAX_CACHE_ENTRY_INFO_SIZE; Result:=-1; GetMem(ice, iceSize); try CacheEntry:=RetrieveUrlCacheEntryStream(PChar(AUrl), ice^, iceSize, false, 0); try if CacheEntry>0 then begin DataSize:=ice.dwSizeLow; Adata.Clear; AData.SetSize(DataSize); Buffer := AData.Memory; if ReadUrlCacheEntryStream(CacheEntry, 0, Pointer(Buffer^), DataSize, 0) then Result:=DataSize else RaiseLastOSError; end; finally UnlockUrlCacheEntryStream(CacheEntry, 0); end; finally FreeMem(ice, iceSize); end; end; procedure TForm3.Button1Click(Sender: TObject); var doc : IHTMLDocument2; img : OleVariant; images : IEnumVARIANT; Fetched : Cardinal; begin ListBox1.Clear; if Supports(WebBrowser1.Document, IHTMLDocument2, doc) and Supports(doc.images._newEnum, IEnumVARIANT, images) then begin images.Reset; while images.Next(1, img, Fetched) = S_OK do begin ListBox1.Items.Add(img.src); end; end; end; procedure TForm3.FormCreate(Sender: TObject); begin //WebBrowser1.Navigate('http://www.delphipraxis.net/topic156542_twebbrowser+image+png+auslesen+anzeigen.html'); WebBrowser1.Navigate('http://commons.wikimedia.org/w/index.php?title=Special%3ASearch&search=png&go=Go'); end; procedure TForm3.ListBox1Click(Sender: TObject); var ms : TMemoryStream; FName : String; begin if ListBox1.ItemIndex > -1 then begin ms := TMemoryStream.Create; GetURLCacheFile(ListBox1.Items[ListBox1.ItemIndex], ms); FName := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'test' + ExtractFileExt(ListBox1.Items[ListBox1.ItemIndex]); ms.SaveToFile(FName); ms.Free; Image1.Picture.LoadFromFile(FName); DeleteFile(FName); end; end; end. |
Re: TWebBrowser Image (PNG) auslesen + anzeigen
und das wird jetzt in einem TImage ausgeben weil ich da lese das es in eine Listbox geht
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Alle URL's der Bilder der Seite landen in der Listbox. Sobald man eine URL anklickt, zeigts das Bild im TImage an.
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Zitat:
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
wenns so wäre dann hätte ich es ja schon gemacht :-P
|
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Zitat:
![]() //Edit: chaosben hat dir eine komplette Anwendung geschrieben. Ein kleines "Danke" wäre sicher nicht zuviel gewesen! |
Re: TWebBrowser Image (PNG) auslesen + anzeigen
Zitat:
So sehe ich das auch :) gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz