Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser Image (PNG) auslesen + anzeigen (https://www.delphipraxis.net/132993-twebbrowser-image-png-auslesen-anzeigen.html)

Mephisto090 23. Apr 2009 11:47


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

Bernhard Geyer 23. Apr 2009 12:20

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.

Mephisto090 23. Apr 2009 12:38

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
habe mich noch nicht so mit Image beschäftigt kannst du mir vllt eine ausführliche Methode geben

chaosben 23. Apr 2009 13:22

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.

Mephisto090 23. Apr 2009 14:27

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
und das wird jetzt in einem TImage ausgeben weil ich da lese das es in eine Listbox geht

chaosben 24. Apr 2009 05:14

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.

toms 24. Apr 2009 05:31

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
Zitat:

Zitat von Mephisto090
und das wird jetzt in einem TImage ausgeben weil ich da lese das es in eine Listbox geht

das ist doch leicht zu ändern, dass es direkt in dem TImage angezeigt wird.

Mephisto090 24. Apr 2009 21:07

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
wenns so wäre dann hätte ich es ja schon gemacht :-P

Mithrandir 24. Apr 2009 21:18

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
Zitat:

Zitat von Mephisto090
wenns so wäre dann hätte ich es ja schon gemacht :-P

Boah ey...

Delphi - Grundlagen

//Edit: chaosben hat dir eine komplette Anwendung geschrieben. Ein kleines "Danke" wäre sicher nicht zuviel gewesen!

EWeiss 24. Apr 2009 22:29

Re: TWebBrowser Image (PNG) auslesen + anzeigen
 
Zitat:

//Edit: chaosben hat dir eine komplette Anwendung geschrieben. Ein kleines "Danke" wäre sicher nicht zuviel gewesen!
OT..
So sehe ich das auch :)

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Seite 1 von 3  1 23      

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