PixMap Frage

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: PixMap Frage

BeitragSo, Jun 24, 2012 6:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hab da so eine farge weiss gar nich obs möglich wäre... oder wie es funktionieren würde,

ich kann mehrere bilder in einer datei "schreiben" mit readbyte & write byte
aber is es auch möglich den ausgelesenen byte in einer pixmap sozusagen hineinzubringen?

ich stell es mir so vor
eine datei test.img
darin:

name des bildes
gesammt bytes
und nun alle bytes

wenn ein neues bild kommt steht ant wieder der name und auch die anzahl der bytes dann wiederrum alle bytes vom bild...

somit könnte ich ein bilderarchie machen, nur mit dem auslesen is es grad so ne sache,. weis jemand rat?

BlitzMoritz

BeitragSo, Jun 24, 2012 10:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht, warum es unbedingt Bytes sein müssen und ob der "Name" der Pixmapvariablen dabei sein muss. Beim Auslesen würdest du den String sowieso nicht so einfach als Variablennamen verwenden können.
Als Variante hätte ich dir das folgende Beispiel anzubieten, dass mehrere Pixmaps in einer Datei speichert und wieder ausliest - und das wolltest du doch eigentlich, oder? Optional könnte man natürlich noch die Gesamtanzahl der gesammelten Pixmaps voranstellen und weitere String-Infos einfügen.
BlitzMax: [AUSKLAPPEN]
Graphics 500, 300

'Erst 'mal irgendwelche künstlichen Bildchen malen:

DrawSomething([255,0,0])
Local PM_red:TPixmap = GrabPixmap(0, 0, 100, 100)
Cls
DrawSomething([0,255,0])
Local PM_green:TPixmap = GrabPixmap(0, 0, 100, 100)
Cls
SetColor 255,255,255

'... und zur Kontrolle anzeigen lassen - bitte Taste druecken!

DrawPixmap PM_red, 100, 100
DrawPixmap PM_green, 300, 100
Flip
WaitKey

'Bilddaten in Datei schreiben:

Local stream:TStream = WriteStream("some_pixmaps.img")
WritePixmapData(stream, PM_red)
WritePixmapData(stream, PM_green)
CloseStream(stream)

'Bilddaten aus Datei wieder auslesen:

stream = ReadStream("some_pixmaps.img")
PM_red = LoadPixmapFromData(stream)
PM_green = LoadPixmapFromData(stream)
CloseStream(stream)

'... und zur Kontrolle anzeigen lassen:

Cls
DrawPixmap PM_red, 100, 100
DrawPixmap PM_green, 300, 100
Flip
WaitKey

Function WritePixmapData(stream:TStream, PM:TPixmap)
WriteInt(stream, PixmapWidth(PM))
WriteInt(stream, PixmapHeight(PM))
For Local x% = 0 Until PixmapWidth(PM)
For Local y% = 0 Until PixmapHeight(PM)
WriteInt(stream, ReadPixel(PM, x, y))
Next
Next
End Function

Function LoadPixmapFromData:TPixmap(stream:TStream)
Local PM:TPixmap = CreatePixmap(ReadInt(stream), ReadInt(stream), PF_BGR888)
ClearPixels(PM)
For Local x% = 0 Until PixmapWidth(PM)
For Local y% = 0 Until PixmapHeight(PM)
WritePixel(PM, x, y, ReadInt(stream))
Next
Next
Return PM
End Function

Function DrawSomething(RGB%[])
SetColor RGB[0], RGB[1], RGB[2]
For Local i% = 1 To 100
DrawLine Rand(0,100), Rand(0,100), Rand(0,100), Rand(0,100)
Next
End Function

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group