AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TImage zu Laufzeit zuordnen

TImage zu Laufzeit zuordnen

Ein Thema von fran · begonnen am 15. Nov 2005 · letzter Beitrag vom 16. Nov 2005
Antwort Antwort
fran

Registriert seit: 4. Nov 2005
38 Beiträge
 
Delphi 6 Personal
 
#1

TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 18:18
Hallo Leute,

ich hätte da mal wieder eine Frage an alle Delphi Experten.

Also ich schreibe da gerade eine Client/Server Anwendung. Der Client holt sich neben anderen Daten auch eine URL auf ein JPEG Bild, für die entsprechenden Daten.

Ein Bild zur Laufzeit zu zuordnen ist ja kein Problem. Ich habe das schon oft wie im folgenden Beispiel gemacht.

image6.Picture.LoadFromFile('c:\bilder\1.jpg'); Aber leider funktioniert das nicht mit einer URL.

Jetzt meine Frage: Gibt es da eine Möglichkeit, das das irgendwie doch geht?

Vielen Dank im Voraus sagt schon mal

Fran
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 18:21
Du kannst dir per TIdHttp.Get (Indy-Komponente) das Bild in einen Stream und von diesem dann in das Image (Delphi-Referenz durchsuchenLoadFromStream) laden.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 18:22
du musst das bild zuvor herunterladen (in Speicher oder Datei), dazu geeignet sind zum Beispiel die Indy-Komponenten. Wenn du das Bild von der URL geladen hast (idealerweise in einen memorystream damit nicht zwischengespeichert werden muss) kannst du dann mit LoadFromStream das ganze in ein JPEGImage laden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
fran

Registriert seit: 4. Nov 2005
38 Beiträge
 
Delphi 6 Personal
 
#4

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 19:16
Da ich bisher nicht wußte, das ich das Bild erst runterladen muss, konnte ich natürlich auch nicht danach suchen, aber jetzt da ich es weiß habe ich hier im Forum eine einfache und geniale Möglichkeit gefunden. Und man muss nicht zwangsweise INDY verwenden.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Datei,Ziel:PChar;
begin
   try
    Datei := 'http://127.0.0.1/bilder/1.jpg';
    Ziel := 'E:\temp\0.jpg';
    UrlDownloadToFile(nil, Datei, Ziel, 0, nil);
   except
    // Fehlermeldung ausgeben
  end;
end;
Das Einzige was zusätzlich noch zu tun wäre, ist den Temp Ordner beim Beenden zu leeren.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 20:40
Zitat von fran:
Da ich bisher nicht wußte, das ich das Bild erst runterladen muss, konnte ich natürlich auch nicht danach suchen, aber jetzt da ich es weiß habe ich hier im Forum eine einfache und geniale Möglichkeit gefunden.
Die von mir und SirThornberry beschriebene Methode ist aber genialer . Jedenfalls läuft alles im Arbeitsspeicher ab, es muss keine temporäre Datei erstellt werden.

PS: Ich z.B. besitze kein Laufwerk "E" .
Delphi-Referenz durchsuchenGetTempFileName
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
fran

Registriert seit: 4. Nov 2005
38 Beiträge
 
Delphi 6 Personal
 
#6

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 20:50
Zitat von Khabarakh:
Die von mir und SirThornberry beschriebene Methode ist aber genialer . Jedenfalls läuft alles im Arbeitsspeicher ab, es muss keine temporäre Datei erstellt werden.

PS: Ich z.B. besitze kein Laufwerk "E" .
Delphi-Referenz durchsuchenGetTempFileName
Genialer ist sie schon, aber ich schrieb genial und einfach und für mich als Delphi Anfänger ist meine gefundene Methode doch erheblich einfacher. Bei eurer Methode mit streams habe ich leider keine Ahnung wie ich das hinkriegen sollte.

P.S. Ich besitze schon ein Laufwerk E. Ich weiß das hat nicht jeder, ist allerdings auch nur eine einfache Testversion. Ich werde später selbstverständlich nicht direkt E darein schreiben. Entweder nehme ich das Temp Laufwerk von Windows, das vom Internet-Explorer (falls möglich) oder ich schreibe das noch zusätzlich in meine bereits vorhandene INI Datei mitrein.

P.P.S: Übrigens bleibt auch die IP und damit die URL des Bildes nicht so wie im Beispiel. Sonst könnte man ja nur Bilder von sich herunterladen.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: TImage zu Laufzeit zuordnen

  Alt 15. Nov 2005, 21:35
Zitat von fran:
Da ich bisher nicht wußte, das ich das Bild erst runterladen muss, konnte ich natürlich auch nicht danach suchen, aber jetzt da ich es weiß habe ich hier im Forum eine einfache und geniale Möglichkeit gefunden. Und man muss nicht zwangsweise INDY verwenden.
Na ja, wenn du nicht irgendeinen guten Grund hast, kein Indy zu nehmen
Delphi-Quellcode:
var jpg : TJPEGImage; // Globaler und irgendwann eine Instanz erzeugt
...
...

var url : String;
    buffer : TMemoryStream;
begin
  buffer := TMemoryStream.Create;
  url := 'http://127.0.0.1/bilder/1.jpg';
  IdHttp.Get(url, buffer);
  jpg.LoadFromStream(buffer);
  buffer.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: TImage zu Laufzeit zuordnen

  Alt 16. Nov 2005, 17:03
@Der_Unwissende: Du solltest noch "Buffer.Position := 0" hinzufügen sonst dürfte das ganze schief gehen. Und wenn du den MemoryStream zur Laufzeit erzeugst wäre es auch sinnvoll TIdHttp auch zur Laufzeit zu erstellen und dann freizugeben. Damit hätte man dann alles in einer procedure und muss nicht erst ein Tidhttp aufs formular packen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz