PNG to Table
Hi,
ich bins mal wieder :D
Und zwar suche ich diesesmal ein Script oder auch nur eine Eklärung für folgende Idee:
Ich will die Farbwerte in einer Table und die größen einer PNG Datei (width und height) in einer Variable speichern und dass ganz ohne die Klasse Bitmap. D.h. ich muss diese Werte aus einer PNG-Datei auslesen. Nur ich hab noch keinen Plan wie ich das angehen muss.
Kann mir da vielleicht einer weiter helfeN?
ich bins mal wieder :D
Und zwar suche ich diesesmal ein Script oder auch nur eine Eklärung für folgende Idee:
Ich will die Farbwerte in einer Table und die größen einer PNG Datei (width und height) in einer Variable speichern und dass ganz ohne die Klasse Bitmap. D.h. ich muss diese Werte aus einer PNG-Datei auslesen. Nur ich hab noch keinen Plan wie ich das angehen muss.
Kann mir da vielleicht einer weiter helfeN?
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Schau dir mal die 4 Scripte* an, welche die Farbwerte einer Bitmap als PNG speichern - das machst du jetzt rückwärts, nur das du es nicht in ein Bitmap speicherst sondern in eine Table (was mMn eine blöde Idee ist, nebenbei) ^_^
Ausserdem findest du in Wikipedia alle technischen Daten wie PNG Dateien gespeichert werden , daraus kannst du dir einfach ableiten, wie du sie auslesen musst - ist nur ein bisschen Zlib- und pack-Wissen nötig (-> Forensuche).
Was hast du denn für eine Idee im Kopf? Wozu die Bilddaten lesen, und so seltsam halten?
Ein reines Rubyscript um Bilder zu ändern, selber machen?
*die Scripte findest du über Forensuche/Google und mindestens zwei auf Itzamná, kann sogar sein das es mehr gibt, ich kenne nur 4
Ausserdem findest du in Wikipedia alle technischen Daten wie PNG Dateien gespeichert werden , daraus kannst du dir einfach ableiten, wie du sie auslesen musst - ist nur ein bisschen Zlib- und pack-Wissen nötig (-> Forensuche).
Was hast du denn für eine Idee im Kopf? Wozu die Bilddaten lesen, und so seltsam halten?
Ein reines Rubyscript um Bilder zu ändern, selber machen?
*die Scripte findest du über Forensuche/Google und mindestens zwei auf Itzamná, kann sogar sein das es mehr gibt, ich kenne nur 4
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Auf das mit dem Rückwärts bin ich auch schon gekommen... Nur so ganz einfach gehts dann auch wieder nciht...
Mein 1. Problem währ da erstmal wie ich den Header und die verschiedenen Sachen vom Rest trenne....? Da komm ich schon mal nicht weiter.
Und was is ne umkehrfunktion zu:
???
Mein 1. Problem währ da erstmal wie ich den Header und die verschiedenen Sachen vom Rest trenne....? Da komm ich schon mal nicht weiter.
Und was is ne umkehrfunktion zu:
|
|
Ruby Quellcode |
1 |
Zlib::Deflate.deflate(data, 8) |
???
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Reborn« (15. Juni 2010, 19:56)
|
|
Ruby Quellcode |
1 2 |
Kernel.require('zlib') Zlib::Inflate.inflate(data,end_mark) |
-
Werbung -
1plus3
-
Nuuuhminaaah
-
compétences(Dieser Tab ist rein satirisch.)mes compétences
max.
Maps machen
Musik machen
Scripts machen
Story ausdenken
Pixeln und so
Events proggen
-
mes projets-
Silentium
Name: Silentium
Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)
Story
NPCs
Scripts
Ressis
Maps
Gesamt(3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²
(Die Tabelle erfüllt lediglich satirische Zwecke.) -
OnyxEine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.
Warnung!
Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:- Compiler - Das Drachenbuch [978-3-8273-7097-6]
Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.
- Computerarchitektur [3-8273-7016-7]
Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.
Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3). - Compiler - Das Drachenbuch [978-3-8273-7097-6]
-
-
enfinJe ne peux pas parler français.
C'est tout ce que Goodle et les restes de cours de français.
Ah Danke, daran hätte ich jetzt nich gedacht, dass ich das ein binden muss.
Also ich bin jetzt danke Palym ein großes Stück weiter gekommen. Die Breite und die Höhe kann ich jetzt schon richtig auslesen, nur enn ich jetzt mit set_pixel ein rotes Rechteckt aus nem Bild auslesen will, kommen nur so kleine graue Farbpunkte. Also irgendwas muss ich falsch gecodet haben...
Doch hier jetzt erstmal das Script:
Hier wird jedesmal bei p Data mit einem Bild das 100x100 Pixel groß ist 355 ausgegeben. Wie kann das sein? o.O Was mach ich da falsch??
Oder vielleicht mach ich auch was beim Auslesen falsch:
Also ich bin jetzt danke Palym ein großes Stück weiter gekommen. Die Breite und die Höhe kann ich jetzt schon richtig auslesen, nur enn ich jetzt mit set_pixel ein rotes Rechteckt aus nem Bild auslesen will, kommen nur so kleine graue Farbpunkte. Also irgendwas muss ich falsch gecodet haben...
Doch hier jetzt erstmal das Script:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 |
file.binmode bytes = [] width = "" height = "" file.each_byte {|b| bytes.push(b.chr)} data = "" (bytes.size - 57).times {|n| data += bytes[n + 40]} 6.times {|n| width += bytes[n + 16]; height += bytes[n + 22]} data = data.unpack("C*") p data.size width = width.unpack("N")[0] height = height.unpack("n")[0] |
zum Lesen den Text mit der Maus markieren
Hier wird jedesmal bei p Data mit einem Bild das 100x100 Pixel groß ist 355 ausgegeben. Wie kann das sein? o.O Was mach ich da falsch??
Oder vielleicht mach ich auch was beim Auslesen falsch:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
height.times do |y| width.times do |x| c += 1.0 if c / width == y next end red = data[c].to_i green = data[c + 1].to_i blue = data[c + 2].to_i alpha = data[c + 3].to_i test.bitmap.set_pixel(x, y, Color.new(red, green, blue, alpha)) end end |
zum Lesen den Text mit der Maus markieren
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Nehmen wir an, das ganze Bitmap ist mit dieser Farbe gefüllt: Color.new(10,20,30,255) auf 3x3 Pixel
So sieht der Array aus:
data = [10,20,30,255, 10,20,30,255, 0,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255]
für height = 10, width = 10 und c = 0;
Wenn c Null ist, dann ist der Wert für den Punkt(0|0)
Color.new(10,20,30,255)
Wenn c Eins ist, dann ist der Wert für den Punkt(1|0)
Color.new(1+0,1+1,1+2,1+3) also Color.new(20,30,255,10)
Wenn c Zwei ist, dann ist der Wert für den Punkt(2|0) auch falsch
Ich würd mal sagen, das du die Schrittlänge für c ändern solltest; aber so ganz blick ich auch nicht durch.
So sieht der Array aus:
data = [10,20,30,255, 10,20,30,255, 0,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255, 10,20,30,255]
für height = 10, width = 10 und c = 0;
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 |
height.times do |y| width.times do |x| c += 1.0 next if(c / width == y) red = data[c + 0].to_i green = data[c + 1].to_i blue = data[c + 2].to_i alpha = data[c + 3].to_i test.bitmap.set_pixel(x, y, Color.new(red, green, blue, alpha)) end end |
Wenn c Null ist, dann ist der Wert für den Punkt(0|0)
Color.new(10,20,30,255)
Wenn c Eins ist, dann ist der Wert für den Punkt(1|0)
Color.new(1+0,1+1,1+2,1+3) also Color.new(20,30,255,10)
Wenn c Zwei ist, dann ist der Wert für den Punkt(2|0) auch falsch
Ich würd mal sagen, das du die Schrittlänge für c ändern solltest; aber so ganz blick ich auch nicht durch.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Ich hab jetzt mal noch den von Palym genannten Fehler beseitigt, jetzt siehts so aus:
Was allerdings nichts an meinem Bytefehler ändert. -.-
Hey ich hab da ja was überlesen, Evrey, was meinst du mit dem 2ten Parameter von Inflate? Der wird gar net angzeigt bei der Classe.
|
|
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 |
file.binmode bytes = [] width = "" height = "" file.each_byte {|b| bytes.push(b.chr)} data = "" (bytes.size - 57).times {|n| data += bytes[n + 40]} 6.times {|n| width += bytes[n + 16]; height += bytes[n + 22]} data = data.unpack("C*") p data width = width.unpack("N")[0] height = height.unpack("n")[0] test = Sprite.new test.bitmap = Bitmap.new(width, height) c_a = [] x = y = 0 data.each do |i| if x == width x = 0 y += 1 next end if c_a.size == 4 red = c_a[0].to_i green = c_a[1].to_i blue = c_a[2].to_i alpha = c_a[3].to_i test.bitmap.set_pixel(x, y, Color.new(red, green, blue, alpha)) c_a.clear end c_a.push(i) x += 1 end |
zum Lesen den Text mit der Maus markieren
Was allerdings nichts an meinem Bytefehler ändert. -.-
Hey ich hab da ja was überlesen, Evrey, was meinst du mit dem 2ten Parameter von Inflate? Der wird gar net angzeigt bei der Classe.
Mehr als a Allgäuer ka a Mensch it wera.
Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Reborn« (17. Juni 2010, 18:37)
Ähnliche Themen
-
Taverne zum philosophischen Phönix »-
Rätsel: Wo ist der Euro?
(24. Mai 2010, 17:20)
-
Taverne zum philosophischen Phönix »-
Kann mir jemand die [table] Funktion erklären?
(2. April 2010, 22:52)
-
RGSS 1 Probleme & Talk »-
Tilemap
(18. März 2009, 19:59)
-
Skript-Anfragen »-
Mathematischer Algorithmus gesucht.
(15. Februar 2009, 09:29)


