Entwickler-Ecke
Ankündigungen - AGS 2009 - Tipps/Lösung zu Gewinnspiel 3
Christian S. - Mi 16.12.09 00:11
Titel: AGS 2009 - Tipps/Lösung zu Gewinnspiel 3
Hallo!
Folgend ein Tipp zu Gewinnspiel 3 ("3D-Film"):
- Der Sturz des Weihnachtsmannes führte zu haufenweise Farbe.
- Vor dem Fall die Treppe runter waren die Pixel ganz normal nach Frame gruppiert und die Farben nach Pixel.
Ich hoffe, es hilft dem ein oder anderen auf die Sprünge :-)
Grüße
Christian
Niko S. - Mi 16.12.09 08:40
Farbe?
Na toll, nun ist das genau das umgekehrte von dem was ich gesagt hätte -> nämlich keine Farbe (nur SW)...
Jetzt, bin ich wieder am Anfang bei einer Datei wo komisches Zeug drin steht, was keiner versteht.
Flamefire - Mi 16.12.09 12:41
Ich find das lustig. Ich lös die Aufgaben immer ohne Tip, dann kommt der Tip und ich hab keine Ahnung, was ich damit hätte anfangen soll ;-)
Niko S. - Mi 16.12.09 14:38
Gibts vielleicht irgendwelche Topics oder so die solche Thematiken behandeln, weil ich habe echt 0 plan wie sowas aussehen soll...
Und ein BMP sieht auch anders aus als das was ich da nun drin habe ...
Noob23 - Mi 16.12.09 14:53
Niko S. hat folgendes geschrieben : |
Gibts vielleicht irgendwelche Topics oder so die solche Thematiken behandeln, weil ich habe echt 0 plan wie sowas aussehen soll...
Und ein BMP sieht auch anders aus als das was ich da nun drin habe ... |
Es ist ja kein BMP sondern ein Film ;)
Niko S. - Mi 16.12.09 15:38
Und ein Film besteht aus mehreren Bildern, folglich sind dort einfach mehrere Bilder hintereinander ...
Frage: Wieviel Bytes hat nun ein Bild? & Wie Les ich die Bilder aus..
Oder lieg ich da etwa falsch?
Flamefire - Mi 16.12.09 16:25
Nein du liegst richtig. Und genau darin liegt ja das Rätsel.
PS: Vorsicht mit solchen Äußerungen, kann schon als Tip gewertet werden.
Die Rätsel sind aber meist so, dass man erst das Problem suchen, lösen und dann in der Lösung noch eine Frage beantworten muss.
Boldar - Mi 16.12.09 16:46
Mhhh, also ich kann mit dem Tipp so garnichts anfangen...
Niko S. - Mi 16.12.09 16:51
So okay der Tipp ist denke ich eindeutig, ich kann nun damit was anfangen, bin mit meinen Analysen weiter =D
BenBE - Do 17.12.09 18:27
Also der Tipp ist mal wieder typisch für unser Mod-Team: Verwirrend ;-) Da muss man aber wirklich schon seitwärts denken, um von der Lösung auf den Tipp zu kommen!
Christian S. - Sa 19.12.09 13:34
Hallo!
Ich habe oben einen weiteren Tipp eingefügt :-)
Grüße
Christian
Niko S. - Sa 19.12.09 13:39
Der Weihnachtsmann sollte sich wirklich bessere Hardware zulegen ....
Sylvus - Sa 19.12.09 14:11
Wenn ich "Farben nach Pixel" lese, hört mein Kopf automatisch auf zu denken, weil er sonst in eine Endlosschleife rutschen würde, was sich negativ auf meine Gesundheit auswirken könnte...
Noob23 - So 20.12.09 07:39
Hab zwar eine plausible Lösung, nur die Tipps hätten mir keinen Deut weitergeholfen - eher das Gegenteil, die Verzweiflung hätte mich heimgesucht :roll:
OG Karotte - So 20.12.09 16:12
Ich hab' weder 'ne plausible Lösung, noch kann ich mit den Tipps irgendetwas anfangen :autsch:
Ich hab' nich mal 'ne Ahnung wo ich "ansetzen" soll :oops:
Niko S. - So 20.12.09 19:53
Versuch doch mal nen Hex Editor... Hier gibts einen im Forum (HxD)
OG Karotte - So 20.12.09 20:30
Niko S. hat folgendes geschrieben : |
Versuch doch mal nen Hex Editor... Hier gibts einen im Forum (HxD) |
Das war das erste was ich genutzt hab'. Ich habe bislang nur keinen Ansatz gefunden die Daten richtig zu interpretieren :oops:
Na ja, ein paar Stunden hab' ich ja noch...
... und wenn alles nichts hilft nutz' ich die 25% Chance :wink:
Heiko - So 20.12.09 20:33
Mal eine Frage ans Team: Wie sieht bei euch nen Wichtel aus? Ein Wichtel ist ja ein Fantasiegeschöpf. Von daher kann er ja auch wie ein Hase, Tiger, Rentier, Schneemann oder sonstwas aussehen...
Christian S. - So 20.12.09 20:42
Ein Wichtel sieht logischerweise nicht so aus wie die anderen Optionen.
Christian S. - Mo 21.12.09 01:20
Soooo, die Auflösung für dieses Rätsel ist, dass ein
Hase zu sehen ist.
Um eine Filmdatei in Frames zu zerlegen, muss man erst einmal wissen, wie groß so ein Frame ist. Das steht in der Filmdatei ganz am Anfang, nämlich das Byte mit Wert 100, dann die Buchstaben "EE", wieder ein Byte 100 und dann wieder die Buchstaben "EE". Ein Frame hat die Dimension 100 x 100 Pixel.
Normalerweise würde man bei einem Film hergehen, und speichert erst die Pixel des Frames Nr. 1, dann Frame Nr. 2, etc. Innerhalb eines Frames speichert man für jedes Pixel die Farben in diesem Pixel zusammen. Da unser Videoformat "3-Eyes-Ready" ist, braucht man drei Farben pro Pixel.
Tatsächlich hat der Sturz des Weihnachtsmannes aber dazu geführt, dass die Farben
Haufen bildeten. Die oben beschriebene
Gruppierung von Pixel nach Frame und Farbe nach Pixel galt nicht mehr. Die Anordnung der Daten war vielmehr so, dass zuerst für Pixel (1,1) alle Rotwerte aller Frames hintereinander geschrieben wurden, dann alle Grünwerte und dann alle Blauwerte (hier Null, weil die Kamera nur für Zweiäuger aufnahm). Dann wurde zum nächsten Pixel gegangen und wieder erst alle Rotwerte aller Frames gespeichert, etc.
Ein
Lösungsprogramm (zip, 6.33 KB) könnte dann folgendes machen, wenn man die verschiedenen Frames in einer PictureBox anzeigen möchte (per Trackbar selektiertbar):
Delphi-Prism-Quelltext
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:
| var ofd := new OpenFileDialog(); if ofd.ShowDialog = DialogResult.OK then begin var bytes := File.ReadAllBytes(ofd.FileName);
var width := Int32(bytes[0]); var height := Int32(bytes[3]);
var frameCount := (bytes.Length - 6) / (width * height * 3); fFrames := new Bitmap[frameCount];
for i : Integer := 0 to frameCount - 1 do fFrames[i] := new Bitmap(width, height);
for x : Integer := 0 to width-1 do for y : Integer := 0 to height-1 do begin var idx := 6 + (width * x + y)*(3*frameCount); for i : Integer := 0 to frameCount - 1 do fFrames[i].SetPixel(x, y, Color.FromArgb(bytes[idx+i], bytes[idx+i+frameCount], bytes[idx+i+2*frameCount])); end;
trackBar1.Maximum := frameCount-1; pictureBox1.Image := fFrames[0]; end; |
Bis auf Invertierung erhält man dann pro Frame dieses Bild zweimal (jeweils in verschiedenen Farbkanälen):
BenBE - Mo 21.12.09 01:26
Oder man nehme Low-Tech, starte den Hex-Editor seiner Wahl, stelle 42h (66 Bytes) pro Zeile ein und drücke PageDown. Schon läuft der Hase von Links nach Rechts ;-)
Christian S. - Mo 21.12.09 01:27
Cheater :mrgreen:
BenBE - Mo 21.12.09 01:31
Wenn ihr die Backdoor offen lasst :P Wär man doch schön blöd, da nicht durchzugehen :mrgreen:
Flamefire - Mo 21.12.09 19:36
Hm...100x100?
Die habe ich nicht gefunden...
Ich hätte ein 66*100 zu bieten
oder 3x 22*100:
Delphi-Quelltext
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:
| procedure TForm1.Button2Click(Sender: TObject); var x,y,cur:Integer; begin cur:=Button2.Tag; if(cur=Length(a)) then begin Timer1.Enabled:=false; exit; end; for y := 0 to 100 - 1 do begin for x := 0 to 22 - 1 do begin if(a[cur]=0) then Image1.Canvas.Pixels[x,y]:=clBlack else Image1.Canvas.Pixels[x,y]:=clWhite; Inc(cur,1); end; for x := 0 to 22 - 1 do begin if(a[cur]=0) then Image2.Canvas.Pixels[x,y]:=clBlack else Image2.Canvas.Pixels[x,y]:=clWhite; Inc(cur,1); end; for x := 0 to 22 - 1 do begin if(a[cur]=0) then Image3.Canvas.Pixels[x,y]:=clBlack else Image3.Canvas.Pixels[x,y]:=clWhite; Inc(cur,1); end; end; Button2.Tag:=cur; end; |
Das sieht irgendwie schön einfach und übersichtlich aus. Und da läuft auch der Hase.
Ist mal wieder typisch: Ich hab die Lösung, aber versteh die Tipps und die Musterlösung nicht ^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!