PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Contest] Mona Lisa im Forum #3 - Bilderwahl und Sourcecode



Ineluki
23.05.2006, 19:10
Werte Combatanten, wertes Publikum, es ist so weit, der Contest ist abgeschlossen, und es findet im Folgenden die Wahl des besten Mona Lisa Bildes statt. Zur wahl stehen eine ganze Reihe von Bildern, von denen jeder ein einziges als persoenlichen Favoriten waehlen kann. Die Bilder sind in alphabetischer Reihenfolge:

Dead Ork (http://www.multimediaxis.de/showthread.php?p=1312177#post1312177)
DFYX - Variante I (http://www.multimediaxis.de/showthread.php?p=1311276#post1311276)
DFYX - Variante II (http://www.multimediaxis.de/showthread.php?p=1311366#post1311366)
DFYX - Variante III (http://www.multimediaxis.de/showthread.php?p=1311410#post1311410)
DFYX - Variante IV (http://www.multimediaxis.de/showthread.php?p=1311694#post1311694)
Dingsi - Variante I (http://www.multimediaxis.de/showthread.php?p=1310039#post1310039)
Dingsi - Variante II (http://www.multimediaxis.de/showthread.php?p=1310327#post1310327)
Dingsi - Variante III (http://www.multimediaxis.de/showthread.php?p=1311420#post1311420)
Dingsi - Variante IV (http://www.multimediaxis.de/showthread.php?p=1311764#post1311764)
Manni (http://www.multimediaxis.de/showthread.php?p=1309967#post1309967)

Es werden dabei keine Bewertungskriterien vorgegeben. Jeder entscheidet subjektiv, welches Bild ihm am besten gefaellt.

Desweiteren soll dieser Thread dazu dienen, den zweiten Teil des Contests einzuleiten, in dem die Sourcecodes vorgestellt werden. Ich wuerde also jeden Teilnehmer bitten, den Sourcecode zu den jeweiligen Bildern hier im Thread zu posten, samt einer kleinen Erklaehrung des zu Grunde liegenden Algorithmus. Die Kriterien zur Bewertung der Quelltexte und die entsprechende Umfrage wird in einem gesonderten Thread zum Wochenende bekanntgegeben.

So .. und nun viel Spass beim Bewerten und dem Veroeffentlichen der Quelltexte ...

Gruss Ineluki

dead_orc
23.05.2006, 19:30
DFYX - Variante IV

Das war mehr ein Ausschlussverfahren:
DFYX - Variante I ist ja nur ein Fehlversuch ^^
DFYX - Variante III ist einfach nur DFYX - Variante II monochrom
Dingsi - aus Prinzip nicht, weil er es sich zu einfach gemacht hat, IMO, und außerdem meine Rauten geklaut hat ;_;
Übrig blieben am Schluss noch DFYX - Variante IV und Mannis Mona Lisa, und da hat DFYX' Version irgendwie einfach n bisschen besser ausgesehen ^^

PS: Und wehe ich sehe am Schluss noch ne Stimme für mich :O

PPS: Eigentlich graut es mir davor, diesen schrecklich unsauberen, unkommentierten, unperformanten (sry Fnord-Team ;_; ) und berhaupt unschönen Code (http://deadorc.ath.cx/~dead_orc/monalisa.phps) zu veröffentlichen, aber muss ja ^^

[EDIT]
@drunken monkey: Hätte dein "Bild" den Vorgaben entsprochen kannste sicher sein wäre meine Stimme dein gewesen. Echt: Hut ab, grandiose Leistung :A

drunken monkey
23.05.2006, 19:31
Ziemlich klar Dingsis vierter Versuch, imo einfach das beste. Bin aber schon ziemlich gespannt auf die Codes. ^^ Keine Ahnung, wie man das so schnell hinkriegen kann, Dingsi erstaunt mich immer wieder! o_O

Hab's btw auch selber versucht, geniales Konzept überlegt, Detailgrad 10-Mal besser als alles andere, im Endeffekt haben sich allerdings zwei klitzekleine Fehler eingschlichen! ^^'' Der erste betraf ein paar Zeichen, die weiß statt schwarz waren, keine Ahnung, wieso. http://www.multimediaxis.de/images/smilies/old/1/nixweiss.gif Der zweite...
Naja, sagen wir's so: immerhin bin ich ziemlich sicher der Erste, der die Fehlermeldung

Der Text, den du eingegeben hast, besteht aus 1193577 Zeichen und ist damit zu lang. Bitte kürze den Text auf die maximale Länge von 20000 Zeichen.
erhalten hat! o_O -_-' Ich habe den Ansatz verfolgt, in normal breiter Schrift das Bild mit lauter "i"s zu erzeugen, wodurch ich 1,5 Mal so viele wie beim Originalbild in eine Zeile gebracht hätte. Dadurch wären 3 Zeichen auf jede Farbangabe gekommen, die ich dann noch mit Übergang zum nächsten belegen wollte, also jedes dritte Zeichen die Originalfarbe, die restlichen ein Gemisch zwischen der Originalfarbe links und der rechts.

Ich kann auch gern den Quellcode posten, hier ist er: Mein irre geniales Prog mit kleinem Schönheitsfehler ^^' (http://stud3.tuwien.ac.at/~e0525225/drunkenmonkey/Morph.java) (Ich kann nur Java gut genug, um sowas zu machen.)

Ich hab's dann, nachdem ich (nach gut 3 Minuten Ladezeit des Forums -_-') die Fehlermeldung erhalten habe, noch selber in HTML-Code umgewandelt und ins Forenlayout geworfen. Ergebnis: bezüglich Breite waren meine Berechnungen absolut korrekt, hat genau gepasst, und auch so ist's eine Augenweide geworden! ^_^
Beweisfoto in Originalgröße (http://stud3.tuwien.ac.at/~e0525225/drunkenmonkey/Bilder/Mona%20Lisa.png)

Dann noch einen Versuch starten, nur um eh gegen den Meister zu verlieren, wollte ich nicht. http://www.multimediaxis.de/images/smilies/old/szuck.gif

Naja, schade dass es bei mir nicht geklappt hat, aber eine tolle Idee, das mit dem Contest! ^_^

Edit: Eine öffentliche Umfrage? o_O Pikant! XD
@ Ork: Warum, deins war doch auch ziemlich gut! o_O

Lukas
23.05.2006, 19:35
Dingsi IV. Gefällt mir irgendwie rein visuell am besten.

nudelsalat
23.05.2006, 19:46
Dingsis drittes und viertes sehen am besten aus.
Ich lass random()*2 entscheiden, welches ich wähle.

Dingsi
23.05.2006, 19:47
Ich hab ausversehen für Dingsi-III gestimmt, aber eigentlich wollte ich DFYX-IV nehmen. Ist einfach qualitativ das beste. ^^

So, zu den Sourcecodes:

Dingsi - I (http://mistburg.de/projects/monalisa/ml_1.rb) / Dingsi - I - Xtreme \m/ (http://mistburg.de/projects/monalisa/ml_1_noc.rb)
Der Algorithmus ist schlicht. Ich such mir alle Zeilen die mit "<font" beginnen raus, lösche jede dritte, gehe alle FONT-Tags durch, lösche jedes drittes und mach BBCode draus. ^_^
Sourcecode-technisch ist die kleine Version hiervon übrigens eindeutig mein Favorit. ^^

Dingsi - II (http://mistburg.de/projects/monalisa/ml_2.rb) / Dingsi - II - Xtreme \m/ (http://mistburg.de/projects/monalisa/ml_2_noc.rb)
Eigentlich genauso schlicht. Und unglaublich fies.
Ich filtere genauso wie in I alle Zeilen mit "<font" raus und verwandele anschließend die Daten in ein Pixel-Array, welches ich mit Hilfe von RMagick (http://rmagick.rubyforge.org/) verkleinere. Hey, warum das Rad neu erfinden?

Dingsi - III
Das selbe wie bei II bis auf diese beiden Zeilen:

image.background_color = '#411A12'
image = image.emboss.wave(20, 150)

Dingsi - IV (http://mistburg.de/projects/monalisa/ml_4.rb)
Größtenteils funktioniert das ganze genauso wie II, nur lese ich alle Pixel doppelt ein. Das heißt das Bild wird intern doppelt so breit verarbeitet -> Beim Verkleinern ist alles feiner.

Heil the Ruby Magic!

P.S.: Eigentlich solltet ihr mich nicht mehr ehren als Microsoft. Die entscheidenden Punkte (Doppelte Qualität und besseres Bild durch Rauten) habe ich von DFYX und dead_orc erklaut. :/

P.P.S.: Respekt, monkey, die Idee ist echt gut. Sieht auch ziemlich klasse aus. Schade, dass es nicht funktioniert. Meine Stimme hät ich dir gegeben.

drunken monkey
23.05.2006, 20:12
Danke für das Lob, Ork und Dingsi! ^_^ Aber mit fast 60 Mal mehr Zeichen als vorgegeben ist das kein wirkliches Kunststück mehr. ^^'' -_-'

Ich hab ausversehen für Dingsi-III gestimmt, aber eigentlich wollte ich DFYX-IV nehmen.
Jaaaaaaaa~, natürlich! :rolleyes: ;)

http://www.multimediaxis.de/images/smilies/old/sm_15.gif Hättest wenigstens einen Hacker oder kleinen Bruder erfinden können! :pP.S.: Eigentlich solltet ihr mich nicht mehr ehren als Microsoft. Die entscheidenden Punkte (Doppelte Qualität und besseres Bild durch Rauten) habe ich von DFYX und dead_orc erklaut. :/
Nicht so bescheiden! ^^ Hier geht's schließlich um's Ergebnis, nicht um den Code. Und wenn du schon so schrecklich fair und bescheiden bist, hättest halt die Sachen nicht klauen dürfen! :p

Aber langsam sieht das ohnehin verdächtig nach Deckmantel aus, "aus Versehen" für sich selbst stimmen, schamlos klauen und dann auf bescheiden spielen,...:rolleyes: ;) :p

Also ich find's weiterhin toll. Auch wenn der Code nach ziemlich wenig Arbeit ausseht, sowas muss man auch erstmal können! ^_^ (Ich muss es wissen, ich kann's nicht! -_-' Wahrscheinlich wäre meins auch viel einfacher gegangen, mit irgendeiner mir unbekannten Klasse, oder so. http://www.multimediaxis.de/images/smilies/old/szuck.gif)

Manni
23.05.2006, 21:22
Öhm ja. Mein Code findet sich hier (http://mannithedark.is-a-geek.net/monalisa.phps). Ich hatte zuerst eine Version (http://mannithedark.is-a-geek.net/monalisa2.phps) mit den image-Funktionen von PHP, aber ich war mir nicht sicher, ob das erlaubt war ^^

Ich weiß noch nicht, wofür ich stimme. Mal schaun ;)

Ineluki
24.05.2006, 11:05
Eigentlich war Dingsi - II mein Favorit ... allerdings kam dann doch noch DFYX mit IV heraus ... und das fand ich einen Tick besser, weil die Haare im Uebergang nicht so kantig waren ...

Dingsi
24.05.2006, 12:37
Könnt ihr euch so was eigentlich in C/C++ vorstellen/realisieren?Ja. Es wär nur unnötiger Aufwand, wenn mans in Ruby bzw. $SCRIPTSRACHE in einem hunderstel der Zeilen machen kann.

DFYX
24.05.2006, 18:52
So, mein Code, mit dem man praktisch alles erzeugen kann:


<?php
$type = $_GET['type'];
if($type == 'bb')
{
?>

<?php
}
else
{
?>
<body bgcolor=#000000>
<font size="-3" color="#ffffff" face="Courier New">
<?php
}
$file = file_get_contents('monalisa.htm');

preg_match_all('#<font color=\#(\w{2})(\w{2})(\w{2})>\w{2}</font>#i', $file, $c, PREG_SET_ORDER);

for($row = 0; $row < 200; $row += 3)
{
for($col = 0; $col < 153; $col += 1.5)
{
for($i = 1; $i <= 3; $i++)
{
$color[$i] = hexdec($c[floor($row * 153 + $col)][$i]);
$color[$i] += hexdec($c[floor($row * 153 + $col + 1)][$i]);
$color[$i] += hexdec($c[floor($row * 153 + $col + 2)][$i]);
$color[$i] += hexdec($c[floor(($row + 1) * 153 + $col)][$i]);
$color[$i] += hexdec($c[floor(($row + 1) * 153 + $col + 1)][$i]);
$color[$i] += hexdec($c[floor(($row + 1) * 153 + $col + 2)][$i]);
$color[$i] += hexdec($c[floor(($row + 2) * 153 + $col)][$i]);
$color[$i] += hexdec($c[floor(($row + 2) * 153 + $col + 1)][$i]);
$color[$i] += hexdec($c[floor(($row + 2) * 153 + $col + 2)][$i]);
$color[$i] = sprintf('%02X', $color[$i] / 9);
}
if($_GET['mono'])
$color[1] = $color[2] = $color[3] = sprintf('%02X', (hexdec($color[1]) + hexdec($color[2]) + hexdec($color[3]))/3);
if($type == 'bb')
echo '.$color[2].$color[3].']'.substr($color[1], 1).'';
else
echo '<font color=#'.$color[1].$color[2].$color[3].'>'.substr($color[1], 1).'</font>';
}
echo "<br>\n";
}

if($type)
{
?>

<?php
}
else
{
?>
</font>
</body>
<?php
}
?>

Das is der Code für Version IV. Für die niedrigauflösenden Versionen müssen folgende Zeilen geändert werden:

Zeile 22: for($col = 0; $col < 153; $col += 3)
Zeile 40: echo '.$color[2].$color[3].']'.$color[1].'';
Zeile 42: echo '<font color=#'.$color[1].$color[2].$color[3].'>'.$color[1].'</font>';

Falls sich jemand spontan in die grün und blau geschlagene Mona Lisa verliebt hat, muss noch folgendes geändert werden:

Zeile 35: $color[$i] = dechex($color[$i] / 9);

Der Rest wird komplett per GET Parameter übergeben.

Chaik
24.05.2006, 19:03
Dingsi IV gewählt hab.

War aber ne extreme entscheidung zwischen Dingsi IV, dead_orc und DFYX IV. Beim genauerem Vergleich hab ich dann dingsi gewählt.

EDIT: Was eventuell als nächster Schritt lustig wär in meinen Augen, ein Programm zu schreiben, das das mit jedem bild machen kann. Also wo man nur das Bild sozusagen angeben muss und des Prog tut das hier so ganz von allein. Da ich mich mit programmiertechnischen dingen aber nichtz auskenne hab ich keine ahnung von sowas. Aber lustig wär es schon find ich :A

Ineluki
27.05.2006, 10:28
Damit erklaehre ich Dingsi zum Gewinner des Mona Lisa Bild Contests

Er lebe HOCH HOCH HOCH usw

Ein weiteres Lob geht natuerlich an alle, die ebenfalls eingesendet haben, oder sich zumindest muehe gegeben haben. Alle Einsendungen entsprachen den vorgegebenen Kriterien, obwohl sie das Forum ganz schoen geknechtet haben ^__-

Damit geht nun der Contest in die zweite Runde, dem bewerten des Codes. Ich gebe den anwesenden noch ueber das Wochenende Zeit die Codes nachzuvollziehen, auszutesten, oder Dokumentationen / Kommentare / Erklaehrungen einzureichen. Anfang der naechsten Woche wird dann die Umfrage nach dem besten Script gestartet.

Schoenen Gruss, Ineluki

dead_orc
27.05.2006, 11:12
Proud to be last \o/
Leider hab ich ja dann doch noch ne Stimme bekommen. Wäre viel cooler gewesen mit ohne Stimmen auszugehen :D

Eigentlich hab ich keinen Bock mir die Codes alle durchzulesen. Ich werde einfach wieder für DFYX stimmen (da Dingsi es sich noch immer zu einfach gemacht hat und geklaut hat)

BTW: Fragt mich nicht, warum das Forum meine Zeilenumbrüche nicht in <br>s umgewandelt hat und deshalb mein Bild bei höheren Auflösungen doppelt ist. Wie im Output und im Code zu sehen ist, sind eigentlich \n's da o.o

Dingsi
27.05.2006, 12:53
Yay ^^
Ich danke zuallererst meiner Familie und meinen Freunden hier (Hallo #progforum!), dem Forum und vor allem Matz, dafür dass er diese wundervolle Sprache geschaffen hat! Und natürlich danke ich der Acada.. äeh, den wunderbaren Usern dieses Forums.

Aber auch DFYX und dead_orc müssen ohne Frage nocheinmal erwähnt werden, ohne die ich es niemals geschafft hätte. Nur durch das Zusammenklauen aus ihren Bildern ist mein Kunstwerk so geworden wie es ist. :D

Nyo, danke. Und Glückwunsch an den Zweitplatzierten.. he.. moment, das bin ja ich. ^^" Okay dann Glückwunsch an DFYX, Manni und dead_orc.

(Irgendwie ists ja doch ein bisschen unfair, dass DFYX und ich jeweils mit vier Bildern angetreten sind, oder?)
0123456789abcdef
Ho.