Einzelnen Beitrag anzeigen

delnu
(Gast)

n/a Beiträge
 
#4

AW: Bild in byte umwandeln und speichern / laden

  Alt 28. Okt 2015, 09:24
@Dejan Vu: Der Kommentar ist themenfremd, zumal das "a" neben dem "s" liegt und darum zum Abrutschen nicht viel gehört - unabhängig davon, daß natürlich immer sinnvoll ist, Beiträge möglichst vor dem Abschicken auf Fehler zu prüfen oder wenigstens danach Korrektur zu lesen.

Zum eigentlichen Thema:
Vor längerer Zeit hatte ich mich auch damit befaßt, Grafiken als Blobs zu speichern. Leider sind die letzten Ansätze von 2010 und ich müßte mich erst wieder einarbeiten, zumal ich sehr viele Zusatzkomponenten bzw. Units eingebastelt hatte, die ich erst zusammensuchen müßte.

Was mir aber noch in Erinnerung ist: Die Größe der einzelnen Grafiken ist nicht ohne Bedeutung. Am Einfachsten ist das Vorhaben bei Winzgrafiken gleicher Dateigröße, beispielsweise Cursoren, Glyphs und Icons.

Weil ich letztlich auch exotische Grafikformate eingebaut hatte, die wohl kaum jemand kennt, war entsprechend erforderlich auch passende Betrachter zu integrieren. Das war damals mit Delphi 5.

Leider weiß ich nicht, welche Grafikformate von heutigen Delphi-Versionen standardmäßig berücksichtigt werden.

Als Dateiformat hatte ich damals bewußt DBF gewählt und den Zugriff über TDBF gestaltet, statt die dumme "Database Engine" zu benutzen.

Aus einer meiner damaligen Kommentardateien kann ich jetzt erstmal diesen Passus schicken, weiß aber nicht, ob das so schon hilft:
Code:
VAR
 tmp      : TMemoryStream;
 BildDaten : String;

...
 BildDaten:=DBF1Bild.value;

 TMP:=TMemoryStream.Create;
 TMP.WriteBuffer(bilddaten[1],DBF1Bild.blobsize);
 Tmp.Position :=0;
 TRY
  DBImage1.Picture.BitMap.LoadFromStream(tmp);
 EXCEPT
  ...
 END;

 tmp.free;
Nächste Woche (früher werde ich nicht dazu kommen) versuche ich mal, meinen damaligen Ansatz weitgehend auf Standardkomponenten/Dateiformate zu reduzieren und dann hier hochladen - es sei denn, jemand anderes hat bereits ein einfaches Beispiel parat und schafft es schneller.
  Mit Zitat antworten Zitat