Alkuperäisen koodin on kirjoittanut T.M.
Esimerkki:
http://laatikko.ttkor.ath.cx/php/ok/naytto/naytto.php
Kuva, jota käytin merkkien suunnittelus:
http://laatikko.ttkor.ath.cx/php/ok/naytto/naytto.bmp
edit: linkit päivitetty 21082006
<?php // Alkuperäinen koodi osoitteessa https://www.ohjelmointiputka.net/koodit_nayta.php?tunnus=1289 // ja sen on kirjoittanut T.M. // // kiitos ideasta SysRq868 // // // Tämänkin koodin jalosti ttkor // ttkor@quakenet // /* Lamput jotka sytytetään: -----0----- I\ I /I I \ 8 / I 5 13 I 9 1 I \ I / I I \I/ I --6- -7-- I /I\ I I / I \ I 4 12 I 10 2 I / 11 \ I I/ I \I 14 -----3----- o */ // Binäärinä eri numerot: $merkki[' '] = bindec('000000000000000'); $merkki['.'] = bindec('000000000000001'); $merkki[','] = bindec('000000000000001'); $merkki['*'] = bindec('000000111111110'); $merkki['#'] = bindec('110001110000000'); $merkki['?'] = bindec('110000010001000'); $merkki['+'] = bindec('000000111001000'); $merkki['-'] = bindec('000000110000000'); $merkki['_'] = bindec('000100000000000'); $merkki['/'] = bindec('000000000100100'); $merkki['\\'] = bindec('000000000010010'); $merkki['<'] = bindec('000000000110000'); $merkki['>'] = bindec('000000000000110'); $merkki['('] = bindec('000000000110000'); $merkki[')'] = bindec('000000000000110'); // $merkki['@'] = bindec('111101010000100'); // pois ku on ruma ku mikä $merkki['0'] = bindec('111111000000000'); $merkki['1'] = bindec('011000000000000'); $merkki['2'] = bindec('110110110000000'); $merkki['3'] = bindec('111100110000000'); $merkki['4'] = bindec('011001110000000'); $merkki['5'] = bindec('101101110000000'); $merkki['6'] = bindec('101111110000000'); $merkki['7'] = bindec('111000000000000'); $merkki['8'] = bindec('111111110000000'); $merkki['9'] = bindec('111101110000000'); // Sama kirjaimille $merkki['A'] = bindec('111011110000000'); $merkki['B'] = bindec('001111110000000'); $merkki['C'] = bindec('100111000000000'); $merkki['D'] = bindec('011110110000000'); $merkki['E'] = bindec('100111110000000'); $merkki['F'] = bindec('100011100000000'); $merkki['G'] = bindec('101111010000000'); $merkki['H'] = bindec('011011110000000'); $merkki['I'] = bindec('000000001001000'); $merkki['J'] = bindec('011110000000000'); $merkki['K'] = bindec('000011100110000'); $merkki['L'] = bindec('000111000000000'); $merkki['M'] = bindec('011011000100010'); $merkki['N'] = bindec('011011000010010'); $merkki['O'] = bindec('111111000000000'); $merkki['P'] = bindec('110011110000000'); $merkki['Q'] = bindec('111111000010000'); $merkki['R'] = bindec('110011110010000'); $merkki['S'] = bindec('101101110000000'); $merkki['T'] = bindec('100000001001000'); $merkki['U'] = bindec('011111000000000'); $merkki['V'] = bindec('000011000100100'); $merkki['W'] = bindec('011011000010100'); $merkki['X'] = bindec('000000000110110'); $merkki['Y'] = bindec('000000000101010'); $merkki['Z'] = bindec('100100000100100'); $merkki['Å'] = bindec('111011110100010'); $merkki['Ä'] = bindec('111011110100010'); $merkki['Ö'] = bindec('111111000100010'); $merkki[''] = bindec(''); // Viivojen paikat $line = array( // 17x22px array( 2, 0, 12, 0), //0 array(14, 2, 14, 9), //1 array(14, 13, 14, 20), //2 array(12, 22, 2, 22), //3 array( 0, 20, 0, 13), //4 array( 0, 9, 0, 2), //5 array( 2, 11, 5, 11), //6 array( 9, 11, 12, 11), //7 array( 7, 2, 7, 9), //8 array(12, 2, 9, 8), //9 array(12, 19, 9, 13), //10 array( 7, 20, 7, 13), //11 array( 2, 19, 5, 13), //12 array( 2, 2, 5, 8), //13 array(16, 22, 17, 22) //14 ); function digi($image, $x, $y, $data, $vari){ global $merkki, $line; $data = (string)$data; $k = 19; // Kuinka iso väli numeroille for($p = 0; $p < strlen($data); $p++, $x++){ $binstr = sprintf("%015b", $merkki[$data[$p]]); for($u = 0; $u < 15; $u++){ if($binstr[$u] != "0"){ imageline( $image, $p*$k + $x+$line[$u][0], $y+$line[$u][1], $p*$k + $x+$line[$u][2], $y+$line[$u][3], $vari ); } } } } header("Content-type: image/png"); $image = imagecreate(600, 200); // Luodaan kuva $mus = imagecolorallocate($image, 0, 0, 0); // Annetaan väri $vih = imagecolorallocate($image, 0, 255, 0); // Annetaan toinenkin väri digi($image, 10, 10, "0123456789", $vih); // Arvaa, mitä näissä tapahtuu :P digi($image, 10, 40, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", $vih); digi($image, 10, 70, "ÅÄÖ*#+-*/?\\<_>()@", $vih); digi($image, 10, 130, "LÄHETÄ KOMMENTTIA", $vih); digi($image, 10, 160, "eipäs ole osoite täällä näkyväs koods :P", $vih); imagepng($image); // Tulostetaan imagedestroy($image); // Poistetaan // edit: koodia muokattu 9.4.2005 ?>
Hieno ei voi kyllä muuta sanoa!!!!
Hieno ei voi kyllä muuta sanoa!!!!
Ei ole tarpeen esitellä uudestaan $merkki ja $line -taulukoita jokaisella funktiokutsulla, määrittele ne funktion ulkopuolella.
lainaus:
Ei ole tarpeen esitellä uudestaan $merkki ja $line -taulukoita jokaisella funktiokutsulla, määrittele ne funktion ulkopuolella.
Hyvä huomio. Kiitos.
Ja tuossa on aika reippaasti tuota merkkitaulukkoa...
chunk_split(base64_encode(gzcompress(serialize(
Lisäksi tuosta voisi tehdä skaalattavan (vektorifontteja ikäänkuin) muutamalla kerto- ja jakolaskulla.
lainaus:
Ja tuossa on aika reippaasti tuota merkkitaulukkoa...
chunk_split(base64_encode(gzcompress(serialize($merkki),9))); pakkaisi sen 6 riviin, mutta silloin sitä ei voi enää editoida...
Lisäksi tuosta voisi tehdä skaalattavan (vektorifontteja ikäänkuin) muutamalla kerto- ja jakolaskulla.
Niinhän sen vois...
Muista kumminkin että tämä on vaan koodivinkki :D
Olen otettu.
Ei mitään gzcompress / base64_encode pakkauksia tarvitse :)
$merkki = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25472, 0, 0, 0, 0, 48, 6, 510, 456, 1, 384, 1, 36, 32256, 12288, 28032, 31104, 13184, 23424, 24448, 28672, 32640, 31616, 0, 0, 48, 0, 6, 24712, 0, 30592, 8064, 19968, 15744, 20352, 18176, 24192, 14208, 72, 15360, 1840, 3584, 13858, 13842, 32256, 26496, 32272, 26512, 23424, 16456, 15872, 1572, 13844, 54, 42, 18468, 0, 18, 0, 0, 2048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30626, 30626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); //... function digi($image, $x, $y, $data, $vari){ global $merkki, $line; $data = strtoupper($data); $k = 19; // Kuinka iso väli numeroille for($p = 0; $p < strlen($data); $p++, $x++){ $binstr = sprintf("%015b", $merkki[ord($data[$p])]); //...
Nykyisessä esimerkissäsi on turhaan muunnettu desimaaliluvuiksi ja sitten desimaaliluvut muunnettu takaisin binääriksi.
Esim:tu desimaaliluvuiksi ja sitten desimaaliluvut muunnettu takaisin binääriksi.
Esim:
$merkki['?'] = bindec('110000010001000') // <- bindec turha, koska: $binstr = sprintf("%015b", $merkki[$data[$p]]); // <- toi muuttaa ne binääriks samalla.
Ja tässä pakattuna tuo yllä oleva taulukkodata:
$data = "eJztklEKA0EIQ69kYnSc+1+sui1lP9q/hVLaDIiixCeM2VeJocU3PdXENAtMFTllp156ZObpZCTI". "KpY5HTDBUaKL/aRu5KIzZY5EvthxKKmFO4tbbFpZCntnIZZE8yAKq+ewCc2A2SLC2xMD5VG9vKI6". "NMCg9do9kIvMaM6hQvYxiOrL25ozPBfFBPUO5ZMKdYLlGfevn5H338wjXO5M7qs9P6wbFwLzeA=="; $merkki = array(); $purku = gzuncompress(base64_decode($data)); for($u = 0; $u < strlen($purku); $u+=5){ $merkki[] = (int)substr($purku, $u, 5); }
Mitäpä tuosta nyt sitten hyötyy...
Edit: pah, strtoupper() funkkari ei osaa ääkkösiä.
lainaus:
Edit: pah, strtoupper() funkkari ei osaa ääkkösiä.
Kyllä osaa, kun asettaa localen:
<?php setlocale(LC_CTYPE, "fi_FI"); echo(strtoupper("äöå")); // ÄÖÅ ?>
Kappas, en tiennytkään että tuo setlocale() funktio toimii myös tällä tavalla (ehkä pitäs lukee manuaalia enemmän).
Tuohon vielä sellainen lisäys, että wintoosassa tuo toimii vain "fin" tai "finnish" määritteellä, jos suomea haluaa ulostaa:
Tuli taas opittua muutama asia lisää :)
ttkor saa kaksi arvausta, että ovatko kuva ja se PHP-tiedosto vielä näkyvinä
lainaus:
ttkor saa kaksi arvausta, että ovatko kuva ja se PHP-tiedosto vielä näkyvinä
arvausta??
mutta asiaan...
Hostname ei ole enää pitkään aikaa ollut käytössä.
Esimerkki on vieläkin saatavilla, mutta eri osoitteessa
http://laatikko.ttkor.ath.cx/php/ok/naytto/
http://laatikko.ttkor.ath.cx/php/ok/naytto/
http://laatikko.ttkor.ath.cx/php/ok/naytto/
Multakin demo:
tästä demoon
Aihe on jo aika vanha, joten et voi enää vastata siihen.