SaveImageToMemory() [Windows-Only]

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: SaveImageToMemory() [Windows-Only]

Beitrag von Christian+ »

So wie ich den Code verstehe enthält der Parameter MemSize der Funktion nach dem Speichern die passende Größe.
Das RealMemSize im Code kannst du löschen das ist überflüssig.
Ruf einfach nach dem SaveImageToMemory einmal ReAllocateMemory auf oder bau es die gleich in die Funktion mit ein.

Code: Alles auswählen

*ImageMemory = SaveImageToMemory(Image, @MemSize)
*ImageMemory = ReAllocateMemory(*ImageMemory, MemSize)
Edit: Wenn es dir auf den Speicherplatz ankommt eigentlich sollte ImageDepth(Image) doch die Bittiefe zurückliefern da AllocateMemory aber Bytes als Parameter nimmst sollte da dann vor allem bei großen Bildern noch Optimierung möglich sein da immer das 8 Fache an Speicherplatz zu reservieren überflüssig ist wenn maximal noch ein kleiner Header dazukommt der nicht im gleichen Verhältnis wie die Bildgröße anwächst.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Re: SaveImageToMemory() [Windows-Only]

Beitrag von pyromane »

Direkt nach dem ich den Beitrag gepostet habe, ist mir auch wieder eingefallen das es ja noch nen MemSize gibt und das ja nicht umsonst da drin ist. Werde das ganze gleich mal testen. Das mit der Bildtiefe stimmt.
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
Antworten