AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild aus XML auslesen. Wie?

Ein Thema von matashen · begonnen am 31. Mär 2014 · letzter Beitrag vom 5. Nov 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 10:01
Schau mal in die Unit {Soap.}EncdDecd.pas, da müsste alles drin sein, was du brauchst.

Delphi-Quellcode:
JStream := TBytesStream.Create(DecodeBase64(AString));
Jpeg := TJPEGImage.Create;
Jpeg.LoadFromStream(JStream);
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (31. Mär 2014 um 10:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 10:10
Ich hatte das mal mit Indy gemacht für PDF - Dateien:

Delphi-Quellcode:
...
procedure Base64DecodeToStream(const AText: string; AStream: TMemoryStream);
...
procedure Base64DecodeToStream(const AText: string; AStream: TMemoryStream);
var
  DecodedStream: TBytesStream;
  Decoder: TIdDecoderMIME;
begin
  Decoder := TIdDecoderMIME.Create(nil);
  try
    DecodedStream := TBytesStream.Create;
    try
      Decoder.DecodeBegin(DecodedStream);
      Decoder.Decode(AText);
      Decoder.DecodeEnd;
      DecodedStream.SaveToStream(AStream);
    finally
      DecodedStream.Free;
    end;
  finally
    Decoder.Free;
  end;
end;
Frank
Frank Reim
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
487 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 12:50
Hallo,

erstmal danke für die konkreten Codeschnipsel und brauchbaren Antworten.

Also ich hab die Enterprise, da ist alles drin - auch im Indy-Paket die IDDecoderMIME.

Ich hatte es schon fast richtig. Was mich wurmt, bei den Jedis ist keine gute Hilfe mit dabei (F1).

Der Code von frank passt super. Ganz klappts aber noch nicht
Ich hab in mal integriert und alles raus was ich ohne procedure nicht brauch und schon anderswo created und free ist

Delphi-Quellcode:
      IDDecoderMIME1.DecodeBegin(jStream);//JStream:TBytesstream;
      IDDecoderMIME1.Decode(a);//a:string;
      IDDecoderMIME1.DecodeEnd;
      jStream.SaveToStream(binstream);//binstream:Tmemorystream;
      jstream.SaveToFile('U:\TEST1.png');//funktioniert auch als .bmp .jpg
letzte Zeile hab ich rein um zu testen welches Bildformat zugrunde liegt, aber irgendwie checkt das Delphi selber und ich kann in jedem bliebigem Format speichern.

image1.Picture.Graphic.LoadFromStream(jstream);// funkioniert nicht! Warum?
image1.Picture.bitmap.loadfromstream(jstream); auch das funktioniert nicht

Irgendwie fehlt mir noch das Puzzle um das Bild in ein TImage zu bekommen.

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 12:54
Versuch einfach mal nur Image1.Picture.LoadFromFile
Musst dann ggf. "jpeg" bzw. "PNGImage" einbinden

Edit: Hat Image1.Picture nicht auch ein LoadFromStream? Dann müsstest du das Bild auch direkt aus dem dekodierten Stream laden können.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (31. Mär 2014 um 12:57 Uhr)
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
487 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 13:28
ich will ja nicht loadfromfile, sondern loadfromstream, und das gibts bei Picture nicht sondern nur im graphic-Adapter

Inziwschen bin ich der festen Überzeugung das es sich um JPEG handelt die hier ins XML eingebunden wurden. Zumindest wenn ich den Stream Speichere und wieder lade dann ist jpg die einzige Dateiversion wo delphi nicht meckert das der Header fehlerhaft ist. der Windows-Explorer zeigt aber alles tadellos an. Evtl wertet der den Header an sich aus und nicht anhand der Dateiendung... egal.

Problem ist noch das ich das Bild nicht direkt vom Stream in mein Image bekomme

Delphi-Quellcode:
Jpeg := TJPEGImage.Create;
Jpeg.LoadFromStream(binstream);
image1.Picture.bitmap.Assign(jpeg);
geht auch nicht. Bekomm ich einen JPEG-Fehler#42

Das einzige was geht ist als temporäre Datei abspeichern und wieder laden mit image1.picture.loadfromfile() - aber das ist ja totaler blödsinn wenn ich das schon im stream habe...
anererseits ists mir langsam schnuppe hauptsache das Ding läuft. Nachdem ich nicht weis wies die Software ablegt bin ich froh das überhaupt wieder als Bild zu bekommen. Evtl komm ich ja im laufe der Zeit noch dahinter.

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 14:03
IMHO erkennt TWICImage bei LoadFromStream das Format.
Delphi-Quellcode:
procedure Test;
var
  AImage: TWICImage;
  ABitMap: TBitmap;
begin
  AImage := TWICImage.Create;
  ABitMap := TBitmap.Create;
  try
    AImage.LoadFromStream(AStream);
    // Weiter entsprechend AImage.ImageFormat
    // oder in eine Bitmap...
    ABitMap.Assign(AImage);
  finally
    ABitMap.Free;
    AImage.Free;
  end;
end;
Bab es grad mal mit PNG ausprobiert:

Delphi-Quellcode:
procedure TForm11.Button1Click(Sender: TObject);
Var
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    AStream.LoadFromFile('r:\warning.png');
    ShowImageFromStream(AStream);
  finally
    AStream.Free;
  end;
end;

procedure TForm11.ShowImageFromStream(AStream: TStream);
Var
  AImage: TWICImage;
begin
  AImage := TWICImage.Create;
  try
    AImage.LoadFromStream(AStream);
    Image1.Picture.Assign(AImage);
  finally
    AImage.Free;
  end;
end;

Frank
Frank Reim

Geändert von dataspider (31. Mär 2014 um 14:15 Uhr)
  Mit Zitat antworten Zitat
hsdkit111

Registriert seit: 12. Aug 2009
11 Beiträge
 
#7

AW: Bild aus XML auslesen. Wie?

  Alt 3. Nov 2015, 17:47
Hallo Matthias
Ich schreibe jetzt auch auf diesen Account!

Ich bekomme es nicht hin, das Bild aus der XML darzustellen, das Bild wir ca. 1/3 korrekt dargestellt, dann aber kommt das Bild verzerrt.
Hast Du mittlerweile eine Lösung gefunden?
Würde mich sehr interessieren, wäre auch bereit, Dir eine Aufwandenstschädigung zukommen zu lassen.

Ich würde Dir gerne eine entsprechende XML Datei zukommen lassen, allerdings ist Selbige > 100KB und somit nicht anzuhängen.

Wäre schön, wenn Du dich melden würdest, DANKE!

Danke und lieben Gruss aus der Schweiz
Hermann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.550 Beiträge
 
Delphi 12 Athens
 
#8

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 14:15
Problem ist noch das ich das Bild nicht direkt vom Stream in mein Image bekomme
Delphi-Quellcode:
Jpeg := TJPEGImage.Create;
Jpeg.LoadFromStream(binstream);
image1.Picture.bitmap.Assign(jpeg);
geht auch nicht. Bekomm ich einen JPEG-Fehler#42
In Welcher Zeile kommt der Fehler?

Ach ja, wolltest du das Jpeg nicht in das "Image" reinbekommen?
Wenn ja, warum weist du es dann dem Bitmap zu?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 14:50
Delphi-Quellcode:
Jpeg := TJPEGImage.Create;
Jpeg.LoadFromStream(binstream);
image1.Picture.bitmap.Assign(jpeg);
geht auch nicht. Bekomm ich einen JPEG-Fehler#42
Probier es wie gesagt mal mit
Delphi-Quellcode:
Jpeg := TJPEGImage.Create;
Jpeg.LoadFromStream(binstream);
image1.Picture.Graphic := Jpeg;
Vorausgesetzt natürlich es ist auch wirklich ein JPEG.
Evtl musst du binstream.Position vorher auf 0 setzen. Bei manchen Methoden macht das Probleme wenn die Position nicht bei 0 steht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.550 Beiträge
 
Delphi 12 Athens
 
#10

AW: Bild aus XML auslesen. Wie?

  Alt 31. Mär 2014, 13:03
funkioniert nicht! Warum?
Nur bei LoadFromFile wird automatisch das Grafik-Format gewählt, anhand der Dateiendung.

image1.Picture.bitmap.loadfromstream(jstream); auch das funktioniert nicht
Ist das denn ein Bitmap?
Und was heißt "funktioniert nicht"?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:04 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