![]() |
Array in einer Bitmap speichern?
Ich schreib grad an einem Projekt in dem ich ein größeres Array fülle (500*600), dessen Werte später in einem Bild dargestellt werden (Integer->RGB). Jetzt will ich das Ganze speichern, also entweder gebe ich das Array weiter oder das Bild. Jetzt will ich wissen ob es möglich wäre, die Bitmap per Canvas.SavetoFile zu speichern und nachher aus den Farbwerten das Array wiederherzustellen. Geht das genau, oder gibt's da Fehler durch eine mögliche Kompression?
Vorteil am Bildweitergeben ist natürlich, dass man sich die Daten auch einfach in Paint o.ä. anschauen kann. |
Re: Array in einer Bitmap speichern?
hallo Toxman,
Probleme mit Kompression sollten nicht auftreten, da Bitmaps (.bmp) in aller Regel in voller Größe gespeichert werden. D.h. selbst ein einfarbiges Bitmap hat diese Größe in Byte: Header_Größe (mögliche Header-Definitionen findet man sicher per Google) + Breite * Höhe * BitsPerPixel / 8 Wenn Du 32 Bits pro Pixel festlegst, kannst Du 32 bit integer-Zahlen in die Pixels-Eigenschaft schieben. Soweit ich weiß gibt's aber kein Canvas.SaveTofile, aber ein Bitmap.SaveToFile. Gruß Roderich |
Re: Array in einer Bitmap speichern?
Danke, ich glaub, dass wird dann doch etwas groß. Ich werd mir da ne Klasse drum rum schreiben und dann einfach eine KlassenVariable per savetofile in eine typisierte Datei schreiben.
Trotzdem Danke :thumb: |
Re: Array in einer Bitmap speichern?
woran ich aber jetzt net gedacht hatte:
bin mir auch nicht sicher, ob ein Bitmap-Objekt nicht beim Lesen/Schreiben seine Pixels-Einträge (die ja vom Typ TColor sind) in irgendeiner Form manipuliert, z.B. das höchstwertige Byte auf $00, $01, oder $02 setzt. mußte halt probieren :wink: Roderich |
Re: Array in einer Bitmap speichern?
Servus,
TCanvas kann meines Wissens nach nicht "direkt" gespeichert werden, TBitmap allerdings schon ( ![]() ![]() ![]() PS: Ich persönlich würd dem Anwender vermutlich die Wahl lassen: Speichern (Array) oder Export als Bitmap (dann könnteste u.U. auch mit Kompression arbeiten oder evtl. anderes Format wählen ;) ) Gruß Stephan |
Re: Array in einer Bitmap speichern?
Solltest du es in ein Bitmap speichern und nachher kompremieren (zB JPEG) dann solltest du drauf achten das du dir ein verlustfreies Format aussuchst... (also nich jpeg) zB Tiff...
nur so als Tipp.... Greetz Boombuler |
Re: Array in einer Bitmap speichern?
Es gibt die Möglichkeit einfach Canvas.Bitmpat.Savetofile zu nehmen und dann einfach zu speichern.
Ich mach das doch eher über eine Klasse, die dann recht simpel geschrieben und gelesen werden kann. |
Re: Array in einer Bitmap speichern?
Ich denke, selbst bei einem verlustfreien Format sind die "Überlebenschancen" für das höchstwertige Byte sehr gering.
Selbst das original TBitmap arbeitet meines Wissens maximal mit 24 bit. |
Re: Array in einer Bitmap speichern?
TCanvas hat eine Eigenschaft Bitmap ? :gruebel: :shock:
Eher andersrum, oda? :stupid:
Delphi-Quellcode:
Gruß
//Bissl Pseudocode :)
bmp := TBitmap.Create... bmp.Canvas.Assign(derAndereCanvas); bmp.SaveToStream ... Stephan |
Re: Array in einer Bitmap speichern?
Also nu mal zum Mitschreiben.
Über Canvas oder Bitmap läuft das gar nicht :oops: Einfach so in ne Datei geht über
Delphi-Quellcode:
Ganz einfach, ohne zusätzliche Sachen :wall:
Image1.picture.savetofile('Bild.bmp');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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