AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Bitmap mit Zlib speichern und laden
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap mit Zlib speichern und laden

Ein Thema von heiopei · begonnen am 21. Jun 2006 · letzter Beitrag vom 23. Jun 2006
 
heiopei
(Gast)

n/a Beiträge
 
#5

Re: Bitmap mit Zlib speichern und laden

  Alt 21. Jun 2006, 14:31
hallo,
funktioniert doch nicht wie ichs mir gedacht hab.

mir ist ein Fehler im Code von H4ndy aufgefallen:
Delphi-Quellcode:
  begin
    Entzipper.Read(Groese, sizeof(Groese));
    MemStream := TMemoryStream.Create;
    [color=#ff001f]MemStream.LoadFromStream(EntZipper, Groese);[/color]

    MemStream.Position := 0;
    Bitmap.LoadFromStream(MemStream);
es gibt kein LoadFromStream, bei dem ein weiterer Größenparameter angegeben werden kann


ich hab das Bild in einen MemoryStream geladen, dann die Größe des Streams mit MemStream.Size ermittelt und in den Zipper geschrieben und danach mit MemStream.SaveToStream(Zipper) das "Bild" gespeichert.

Delphi-Quellcode:
  ...
  MemStream := TMemoryStream.Create;
  ...
  Bild.SaveToStream(MemStream);
  TempI64 := MemStream.Size;
  Zipper.Write(TempI64, SizeOf(TempI64);
  MemStream.SaveToStream(Zipper);
  ...
  FreeAndNil(MemStream);
Das funktioniert auch, nur ob es wirklich richtig ist, bezweifle ich da ich beim Auslesen die Fehlermeldung "invalid Bitmap..." erhalte.

Beim Lesen ermittle ich erstmal die Größe des MemStreams. Dann Lade ich den Stream. Allerdings weis ich nicht, welche die richtigere Methode zum Laden wäre:

Delphi-Quellcode:
  ...
  MemStream := TMemoryStream.Create;
  ...
  EntZipper.Read(TempI64, SizeOf(TempI64));
  //welche Methode ist die richtige?
  MemStream.LoadFromStream(EntZipper); // Dann bräuchte ich aber die Größenangabe nicht, oder muss
                                       // ich erst mit SetSize die Größe bestimmen???
  MemStream.CopyFrom(EntZipper, TempI64);
  ...
  Bild.LoadFromStream(MemStream);
  ...
  FreeAndNil(MemStream);
geht es nicht doch irgendwie das ganze auch ohne den umständlichen MemoryStream-Weg zu lösen. Bei einem TFileStream funktioniert das ganze - erst bei der Verwendung von der ZLibEx / Zlib tritt der Fehler auf!!

danke für hilfe,
heiopei
  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 12:44 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