Bilder in den "Imagebuffer" schreiben und abspeich
Übersicht

![]() |
cdiedeBetreff: Bilder in den "Imagebuffer" schreiben und abspeich |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich habe ein kleines Problem beim Programmieren eines Map-Editors. Der Editor soll zuerst eine große Map laden (das ist ein z.B. 4000x4000 Pixel großes Bild) und dieses in viele kleine 200x200 Pixel Bilder verteilen und seperat in einem Ordner abspeichern. Ich wollte das nun so machen: Zuerst Map.jpg laden, dann mit CreateImage leere 200x200 Bilder erzeugen, dann in die leeren Bilder jeweils einen Teil der Map mit DrawImageRect speichern und zum Schluss nochmal als Datei abspeichern, z.B. Map_02_09.jpg Nun weiß ich aber nicht so wirklich, wie die BlitzMax-Befehle dazu heißen. Soweit bin ich bis jetzt: Code: [AUSKLAPPEN] Strict
AppTitle$ = "Mapeditor" Graphics 800,600,0 'Map laden Global GesamtMap:TImage = LoadImage("map.jpg") 'Zählervariablen Global i:Int, j:Int 'Einzelne Map-Teile Global Map_x:TImage[(ImageWidth(GesamtMap)/200)+1] Global Map_y:TImage[(ImageHeight(GesamtMap)/200)+1] For i = 0 To (ImageWidth(GesamtMap)/200) For j = 0 To (ImageHeight(GesamtMap)/200) Map_x[i] = CreateImage(200,200) ..... so hier wollte ich jetzt eigendlich sowas wie imagebuffer usw. verwenden... weiß aber nicht wie!.. Next Next Flip WaitKey Ich hoffe ihr könnt mir ein wenig auf die Sprünge helfen. Habe schon ewig nichts mehr mit Blitzmax zu tun gehabt und möchte mich gerne wieder einarbeiten! Danke! |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So große Bilder solltest du auf keinen Fall als TImage laden. Bilder werden als Texturen im VRAM gespeichert und sind dabei auf die Limitierungen der Grafikkarte beschränkt. Manche Karten können nur 2048x2048 Texturen im Speicher halten, sodass das Laden deiner Map fehlschlagen würde.
Vielleicht kannst du die Map stattdessen aus Tiles aufbauen. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
cdiede |
![]() Antworten mit Zitat ![]() |
---|---|---|
ChristianK hat Folgendes geschrieben: So große Bilder solltest du auf keinen Fall als TImage laden. Bilder werden als Texturen im VRAM gespeichert und sind dabei auf die Limitierungen der Grafikkarte beschränkt. Manche Karten können nur 2048x2048 Texturen im Speicher halten, sodass das Laden deiner Map fehlschlagen würde.
Vielleicht kannst du deine Map stattdessen aus Tiles aufbauen. Naja ich wollte ja aus der großen Bilddatei Tiles machen, aber dazu muss ich die ja irgendwie zerkleinern. Wie kann man das Problem lösen? |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du wirst dich schon an die größte ladbare Größe halten müssen, ganz einfach.
MfG DaysShadow |
||
Blessed is the mind too small for doubt |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
*mal paar Schlagworten in den Raum werf*
LoadPixmap ... a) DrawPixmap / GrabPixmap ... b) PixmapWindow ![]() |
||
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ganze müsste doch gehen, indem du das Map-Bild per LoadAnimImage lädst und jedes Einzelbild 200x200 pixel groß machst. Da müssten dann die passenden Pixmaps rauskommen, die du dann per SavePixmapJPG oder ähnliches speichern kannst. | ||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
DrawPixmap ist mit abstand das lahmste, was man machen kann.
Dabei wird jeder einzelne pixel mit einem Draw-Aufruf an die Graka geschickt. Bei einem 4000x4000 grossen bild könnte sowas schonmal mehrere sekunden dauern. |
||
![]() |
Geeecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann damit aber das Bild in kleinere Aufteilen, abspeichern, und später als TImage laden und zeichnen. | ||
.... |
![]() |
HackerBoyZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
RE: Drawpixmap
aber ist doch eig. egal wenn es lange dauert... soweit ich das mitbekommen habe ist es ja ein tool das große bilder zerlegt und nicht im spiel oder? somit ist das ja eig net schlimm wenn man DrawPixmap verwendet |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group