Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Bitmap speichern
Und mal wieder eine Frage von mir =)
Ich habe mir dem Maker ein Bitmap aus Pixeln zusammengesetzt und jetzt möchte ich, dass der Maker es als neue png-Datei speichert.
Es gibt doch auch in manchen Spielen eine Screenshot-Funktion, daher müsste das ja machbar sein^^
Ich habe mir dem Maker ein Bitmap aus Pixeln zusammengesetzt und jetzt möchte ich, dass der Maker es als neue png-Datei speichert.
Es gibt doch auch in manchen Spielen eine Screenshot-Funktion, daher müsste das ja machbar sein^^
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Aber da wird der ganze Screenshot gespeichert und ich brauche ja nur ein Bitmap.
Caesar hat mal eine Bitmap to BMP Methode geschrieben:
Aufrufbeispiel:
~Monsta
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#////////////////////////////Bitmaps als BMP speichern////////////////////////// #~~~~~~~~~~~~~~~~~~~by Caesar~~~~~~~~~~~~~~~~~~ #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ class Bitmap def dump(filename) f = File.open(filename, "w") #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Dateiheader #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Datei-Identifikation ("BM") f.write_bytes(0x42, 0x4d) # Dateigröße in Bytes bytes_per_row = width*3 bytes_per_row += 1 until bytes_per_row % 8 == 0 f.write_reverse_dword(54 + bytes_per_row*height) # reserviert f.write_bytes(0, 0, 0, 0) # Headergröße in Bytes f.write_bytes(54, 0, 0, 0) #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Formatheader #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Formatheadergröße in Bytes f.write_bytes(40, 0, 0, 0) # Breite in Pixeln f.write_reverse_dword(width) # Höhe in Pixeln f.write_reverse_dword(height) # Anzahl Ebenen (1) f.write_bytes(1, 0) # Bittiefe (24) f.write_bytes(24, 0) # Kompression (0, unkomprimiert) f.write_bytes(0, 0, 0, 0) # Größe der Pixeldaten in Bytes f.write_reverse_dword(bytes_per_row * height) # X-Auflösung (ignoriert) f.write_bytes(0, 0, 0, 0) # Y-Auflösung (ignoriert) f.write_bytes(0, 0, 0, 0) # Anzahl genutzer Faren (ignoriert) f.write_bytes(0, 0, 0, 0) # Anzahl wichtiger Farben (ignoriert) f.write_bytes(0, 0, 0, 0) #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # Pixeldaten #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< for y in 0...height for x in 0...width color = get_pixel(x, height-y-1) f.write_bytes(color.blue, color.green, color.red) end (bytes_per_row - width*3).times do f.write_bytes(0) end end f.flush f.close end end #============= class IO def write_bytes(*bytes) bytes.each do |byte| putc byte end end #------------------- def write_reverse_dword(data) hex = "%08x" % data write_bytes(hex[6..7].hex, hex[4..5].hex, hex[2..3].hex, hex[0..1].hex) end end |
Aufrufbeispiel:
|
|
Ruby Quellcode |
1 |
@sprite.bitmap.dump("Test.bmp") |
~Monsta
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Ich nehm an du redest jetzt vom Screenshot-Skript.
Da geht aber die ganze Transparenz futsch. Ansonsten wärs kein Problem^^
Da geht aber die ganze Transparenz futsch. Ansonsten wärs kein Problem^^
Bitmap hat keine Alphakanäle und somit geht die Transparenz so eh flöten. ( Gibt zwar wohl bei 32 Bit Bitmaps Tricks um Alpha Kanäle zu erzeugen, aber das geht wieder ein bisschen weiter ^^ )
Habs auch grad noch mal getestet.. Geht so wirklich nicht Oo
In einem anderen Zusammenhang gings immer einwandfrei.
Musst eventuell dann also doch das Screenshotscript nehmen. Für die Transparente Farbe kannste ja vielleicht nen Trick verwenden. Einfach das Bitmap auf einen Hintergrund mit einer bestimmten Farbe setzen. Wie sone Art Blaue Wand bei den Film und Fototechnicken wo du dann diese Farbe durch die Unsichtbare ersetzt.
~Monsta
Habs auch grad noch mal getestet.. Geht so wirklich nicht Oo
In einem anderen Zusammenhang gings immer einwandfrei.
Musst eventuell dann also doch das Screenshotscript nehmen. Für die Transparente Farbe kannste ja vielleicht nen Trick verwenden. Einfach das Bitmap auf einen Hintergrund mit einer bestimmten Farbe setzen. Wie sone Art Blaue Wand bei den Film und Fototechnicken wo du dann diese Farbe durch die Unsichtbare ersetzt.
~Monsta
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Dann sind aber semi-transparente Stellen nicht mehr richtig. =(
Seltsamerweise kann man mt dem BMP-Skript auch als png speichern...^^ (wollt ich nur mal anmerken^^)
Seltsamerweise kann man mt dem BMP-Skript auch als png speichern...^^ (wollt ich nur mal anmerken^^)
Dann sind aber semi-transparente Stellen nicht mehr richtig. =(
Brauchst du denn Semi-Transparente Stellen dringend?
Seltsamerweise kann man mt dem BMP-Skript auch als png speichern...^^ (wollt ich nur mal anmerken^^)
Nein kannst du nicht. Nur weil du die Endung änderst und Grafikanzeigeprogramme sich nach dem Dateiheader richten und es anzeigen, heißt dass noch lange nicht, dass es eine PNG Datei ist. Es ist eine Bitmapdatei.
@Rataime Script:
Das Bitmap to PNG Script findest du hier:
http://www.66rpg.com/htm/news624.htm
Aufruf:
|
|
Ruby Quellcode |
1 |
bitmap_obj.make_png(name[, path]) |
Funktioniert bei mir aber nicht. Kommt immer nur ein Leeres Bild bei raus. Übrigens auch beim fertigen Script von Rataime...
~Monsta
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Ja
Zitat
Brauchst du denn Semi-Transparente Stellen dringend?
Oh...
Zitat
Nein kannst du nicht. Nur weil du die Endung änderst und Grafikanzeigeprogramme sich nach dem Dateiheader richten und es anzeigen, heißt dass noch lange nicht, dass es eine PNG Datei ist. Es ist eine Bitmapdatei.
Ich krieg da nen Fehler...
Zitat
Funktioniert bei mir aber nicht. Kommt immer nur ein Leeres Bild bei raus.
undifined local variable or method "bitmap_obj"
und noch irgendein Interpreter.
Hab ich da was falsch gemacht oder was ist los damit?
Ich hab mir die Demo runtergeladen und bei mir gehts (dateianhang)
Zitat
Übrigens auch beim fertigen Script von Rataime...
Anstatt bitmap_obj sollst du ja auch dein Objekt angeben ^^
zB:
zB:
|
|
Ruby Quellcode |
1 |
@sprite.bitmap |
Skripte:
Animations "Entruckler"
Console
Drunken Mode
Eventskript Debugger
Flat-Events
Impassable Script
Item Shortcut
MSS: Monsta's Shoot System (Neu)
Radius Skript
Random Event Teleport
RMXP Leistungstest
Single Rotate
Split Screen (Beta)
Tutorials:
'alias' Bug beheben
Eigenes RTP
Standard KS komplett Übersetzen
RGSS: Eigener HUD
Programme:
Maker Exchange [ MEX ]
RMXP Skript Explorer
RPGXP Code Converter
Spiele:
[Minispiel] Stampfi V1.5 (Gold)
[Minispiel] Mastermind XP
[Humor] Verfressene Klone
______________________________
[Zukunft] Evil Science
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Achso, ich dachte das soll bei name hin xD

