AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schnelles nachladen von Bilddateien
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelles nachladen von Bilddateien

Ein Thema von Memnarch · begonnen am 15. Jan 2011 · letzter Beitrag vom 23. Mai 2023
 
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#23

AW: Schnelles nachladen von Bilddateien

  Alt 16. Jan 2011, 21:12
SO, also irgendwas mache ich hier falsch:

Code:
procedure LoadIdToImage(AId: Integer; ABitmap: TBitmap);
var
  Image: TGPImage;
  LStream: TMemoryStream;
  LStreamAdapter: TStreamAdapter;
begin
  LStream := TMemoryStream.Create;
  PackHelper.GetPackItem(AId, LStream);
  LStream.seek(0,soFromBeginning);
  LStreamAdapter := TStreamAdapter.Create(LStream, soReference);

  Image := TGPImage.Create();
  Image.FromStream(LStreamAdapter);
  try
    GPImageIntoBitmap(Image, ABitmap);
  finally
    Image.Free;
    LStreamAdapter.Free;
    LStream.Free;
  end;
end;
Kurz vorweg: Packhelper ist eine selbtgeschriebene klasse, die in dder Lage ist, dateien in meine Packete reinzupacken und rauszuholen.
Die GetPacketItem holt für den angegebenen Index die daten und packt sie in den übergebenen MemoryStream. GPImageIntoBitmap ist wie das Original von Xaromz, nur wird hier keine Bitmap zurückgegeben sondern in eine vorhandene übertragen.

GPImageIntoBitmap funzt ganz sicher, die benutze ich nämlcih auch, wnen ich TGPImage direkt von der Platte lade.

Der stream der von meinem PackHelper übergeben wird, scheint auch in ordnung zu sein. Ich haben den Erhaltenen Memorystream zu testzwecken einfach direkt als png file abgespeichert, resultat war die angeforderte Bildatei und schien auch OK zu sein.

Mach ich da oben was beim TSreamadapter komplett falsch?
Oder darf ich dne garnicht direkt übergeben? Sondenr muss das erst in einen IStream clonen ?

DAs problem ist nämlch, dass ich am ende eine "Ungültige Zeigeroperation" bekomme >.<

EDIT: achherje, habe gerade gesehen das CLONE nichteinmal implimentiert ist o.O. Aber hier gibts ne lösung die ich mal Probieren werde:
LINK

EDIT: nö klappt nochimmer nicht >.<.

EDIT2: schon gelöst, ich musste den TStreamAdapter constructor auf ein ISTREAM objeckt und auf kein TStreamAdapter anwenden XD

MFG
Memnarch

Geändert von Memnarch (16. Jan 2011 um 21:30 Uhr)
  Mit Zitat antworten Zitat
 


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 03:55 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