Darse de alta en la web | Recuperar password   
Inicio / Desafios / Carácter Marciano / Solucion de panino

Desafío Carácter Marciano

#3 Solución de panino

Código de la Solución Ver código | Comentarios Ver comentarios (0) | Descargar Descargar código

Fecha: 31 agosto 2006

Tamaño: 259834 caracteres

Comentarios: 0

Solución online:
http://www.disegnocentell.com.ar/alien/desafio.php

Premios
Código premiado Mejor Presentación!

Valoración PuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuación 9.25 (8 votos)

"Quise resolver el problema planteado pero también hacer un trabajo que mostrara cómo resolver otros problemas relacionados. Ojalá les guste."

Valora esta solución

<?php
/**  
*  
* Creado y desarrollado por Andrés Fernández  
* para el desafio Carácter Marciano de PHP-Hispano  
*  
* www.php-hispano.net  
* mobius@disegnocentell.com.ar  
*  
* Para que todo funcione correctamente debe colocarse este archivo en un directorio con permisos de lectura y escritura.
*
*/  
?>
<?php
/*
Para iframe de experimento con fuentes en html (textografías)
*/
if(isset($_GET['panino'])){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>desafio marciano</title>
<style type="text/css">
<!--
body {
background-color:#000000;
    font-family: "Courier New", Courier, mono;
    font-size: 10px;
    line-height: 7px;
    letter-spacing: 1px;
    color: #FFFFFF;
    }

-->
</style>
</head>
<body>
<?php
$panino
='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';
$im = imagecreatefromstring(base64_decode($panino));
define('MAX_ANCHO', 80);
define('MAX_ALTO', 80);
$width = imagesx($im);
$height = imagesy($im);
$scale = min(MAX_ANCHO/$width, MAX_ALTO/$height);
$new_width = floor($scale*$width);
$new_height = floor($scale*$height);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($tmp_img, $im, 0, 0, 0, 0,$new_width, $new_height, $width, $height);
$str=' PHP-Hispano.NET y #PHP_para_Torpes :: Todos acabamos aprendiendo ';
$largo=strlen($str);
$contador=-1;
for(
$y=0;$y<imagesy($tmp_img);$y++) {
    for(
$x=0;$x<imagesx($tmp_img);$x++) {
    
$contador++;
        
$rgb = imagecolorat($tmp_img,$x,$y);
        
$hex = sprintf("%06X", $rgb);
        echo
"<font color=\"#$hex\">".$str[$contador%$largo]."</font>";
     }
    echo
"<br />";
}
imagedestroy($im);
imagedestroy($tmp_img);
?>
</body>
</html>
<?php exit; } ?>
<?php
/*
Para iframe experimento ascii art
*/
if(isset($_GET['che'])){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>DESAFIO</title>
<style type="text/css">
<!--
body {
    font-family: "Courier New", Courier, mono;
    font-size: 9px;
    line-height: 9px;
    letter-spacing: 1px;
    }
-->
</style>
</head>
<body>
<?php
echo join('<br />',file('che.txt'));
?>
</body>
</html>
<?php exit;} ?>
<?php
function getmicrotime(){  
  list (
$micro, $time) = explode(" ", microtime());  
  return
$time + $micro;  
}  
/*
Función que genera las imágenes con paleta de colores creada especialmente para el desafío
*/
function con_paleta($rgb='',$archivo_imagen='imagen1.jpg'){
    
$inicio = getmicrotime();  
    
$archivo='marciano.txt';  
    
$lineas=file($archivo);  
    
$tot=count($lineas);  
    
$largo=strlen($lineas[0]);  
    
$propw=imagefontwidth(1)*(strlen($lineas[0]))/6;  
    
$proph=imagefontheight(1)*$tot/6;  
    
$im=imagecreate((strlen($lineas[0])),$tot);  
    
$fondo=imagecolorallocate($im,150,150,150);
    switch(
$rgb){
    case
'':
    
$col['$']= imagecolorallocate($im,190,190,190);  
    
$col['%']= imagecolorallocate($im,220,220,220);  
    
$col['#']= imagecolorallocate($im,100,100,100);  
    
$col['M']= imagecolorallocate($im,50,50,50);  
    
$col['N']= imagecolorallocate($im,80,80,80);  
    
$col['H']= imagecolorallocate($im,95,95,95);  
    
$col['A']= imagecolorallocate($im,120,120,120);  
    
$col['Q']= imagecolorallocate($im,120,120,120);  
    
$col['Y']= imagecolorallocate($im,150,150,155);  
    
$col['2']= imagecolorallocate($im,160,160,160);  
    
$col['0']= imagecolorallocate($im,120,120,120);  
    
$col['D']= imagecolorallocate($im,130,130,130);  
    
$col['U']= imagecolorallocate($im,130,130,130);  
    
$col['+']= imagecolorallocate($im,245,245,245);  
    
$col['.']= imagecolorallocate($im,245,245,245);  
    
$col[' ']= imagecolorallocate($im,245,245,245);  
    
$col["\r"]= imagecolorallocate($im,255,255,255);  
    
$col["\n"]= imagecolorallocate($im,255,255,255);  
    break;
    case
'paleta2':
    
$col['$']= imagecolorallocate($im,255,190,190);
    
$col['%']= imagecolorallocate($im,255,220,220);
    
$col['#']= imagecolorallocate($im,255,100,100);
    
$col['M']= imagecolorallocate($im,255,50,50);
    
$col['N']= imagecolorallocate($im,255,80,80);
    
$col['H']= imagecolorallocate($im,255,95,95);
    
$col['A']= imagecolorallocate($im,255,120,120);
    
$col['Q']= imagecolorallocate($im,255,120,120);
    
$col['Y']= imagecolorallocate($im,255,150,150);
    
$col['2']= imagecolorallocate($im,255,160,160);
    
$col['0']= imagecolorallocate($im,255,120,120);
    
$col['D']= imagecolorallocate($im,255,130,130);
    
$col['U']= imagecolorallocate($im,255,130,130);
    
$col['+']= imagecolorallocate($im,255,245,245);
    
$col['.']= imagecolorallocate($im,255,245,245);
    
$col[' ']= imagecolorallocate($im,255,245,245);
    
$col["\r"]= imagecolorallocate($im,255,255,255);
    
$col["\n"]= imagecolorallocate($im,255,255,255);
    break;
    case
'paleta3':
    
$col['$']= imagecolorallocate($im,190,255,190);
    
$col['%']= imagecolorallocate($im,220,255,220);
    
$col['#']= imagecolorallocate($im,100,255,100);
    
$col['M']= imagecolorallocate($im,50,255,50);
    
$col['N']= imagecolorallocate($im,80,255,80);
    
$col['H']= imagecolorallocate($im,95,255,95);
    
$col['A']= imagecolorallocate($im,120,255,120);
    
$col['Q']= imagecolorallocate($im,120,255,120);
    
$col['Y']= imagecolorallocate($im,150,255,150);
    
$col['2']= imagecolorallocate($im,160,255,160);
    
$col['0']= imagecolorallocate($im,120,255,120);
    
$col['D']= imagecolorallocate($im,130,255,130);
    
$col['U']= imagecolorallocate($im,130,255,130);
    
$col['+']= imagecolorallocate($im,245,255,245);
    
$col['.']= imagecolorallocate($im,245,255,245);
    
$col[' ']= imagecolorallocate($im,245,255,245);
    
$col["\r"]= imagecolorallocate($im,255,255,255);
    
$col["\n"]= imagecolorallocate($im,255,255,255);
    break;
    case
'paleta4':
    
$col['$']= imagecolorallocate($im,190,190,255);
    
$col['%']= imagecolorallocate($im,220,220,255);
    
$col['#']= imagecolorallocate($im,100,100,255);
    
$col['M']= imagecolorallocate($im,50,50,255);
    
$col['N']= imagecolorallocate($im,80,80,255);
    
$col['H']= imagecolorallocate($im,95,95,255);
    
$col['A']= imagecolorallocate($im,120,120,255);
    
$col['Q']= imagecolorallocate($im,120,120,255);
    
$col['Y']= imagecolorallocate($im,150,150,255);
    
$col['2']= imagecolorallocate($im,160,160,255);
    
$col['0']= imagecolorallocate($im,120,120,255);
    
$col['D']= imagecolorallocate($im,130,130,255);
    
$col['U']= imagecolorallocate($im,130,130,255);
    
$col['+']= imagecolorallocate($im,245,245,255);
    
$col['.']= imagecolorallocate($im,245,245,255);
    
$col[' ']= imagecolorallocate($im,245,245,255);
    
$col["\r"]= imagecolorallocate($im,255,255,255);
    
$col["\n"]= imagecolorallocate($im,255,255,255);
    break;
    }
    for(
$a=0;$a<$tot-1;$a++){  
        for(
$b=0;$b<$largo;$b++){  
            
imagesetpixel ($im,$b,$a,$col[$lineas[$a][$b]]);  
        }  
    }  
    
$width = imagesx($im);  
    
$height = imagesy($im);  
    
$tmp_img = imagecreatetruecolor($propw, $proph);  
    
imagecopyresampled($tmp_img, $im, 0, 0, 0, 0,$propw, $proph, $width, $height);  
    
imagestring($tmp_img,1,10,5,'Generado en '.(getmicrotime()-$inicio).' segundos',$col['$']);
    
imagejpeg($tmp_img,$archivo_imagen,100);   
    
imagedestroy($im);  
    
imagedestroy($tmp_img);  
}
/*
Función que fuerza a las imágenes creadas con la paleta del desafío a adoptar el gradiente de colores de otra imagen
*/
function gradiente($scale,$archivo_imagen){
    
$inicio = getmicrotime();  
    
$archivo='marciano.txt';  
    
$lineas=file($archivo);  
    
$tot=count($lineas);  
    
$largo=strlen($lineas[0]);  
    
$propw=imagefontwidth(1)*(strlen($lineas[0]))/6;  
    
$proph=imagefontheight(1)*$tot/6;  
    
$im=imagecreate((strlen($lineas[0])),$tot);  
    
$fondo=imagecolorallocate($im,150,150,150);
    
$col['$']= imagecolorallocate($im,190,190,190);
    
$col['%']= imagecolorallocate($im,220,220,220);
    
$col['#']= imagecolorallocate($im,100,100,100);
    
$col['M']= imagecolorallocate($im,50,50,50);
    
$col['N']= imagecolorallocate($im,80,80,80);
    
$col['H']= imagecolorallocate($im,95,95,95);
    
$col['A']= imagecolorallocate($im,120,120,120);
    
$col['Q']= imagecolorallocate($im,120,120,120);
    
$col['Y']= imagecolorallocate($im,150,150,155);
    
$col['2']= imagecolorallocate($im,160,160,160);
    
$col['0']= imagecolorallocate($im,120,120,120);
    
$col['D']= imagecolorallocate($im,130,130,130);
    
$col['U']= imagecolorallocate($im,130,130,130);
    
$col['+']= imagecolorallocate($im,245,245,245);
    
$col['.']= imagecolorallocate($im,245,245,245);
    
$col[' ']= imagecolorallocate($im,245,245,245);
    
$col["\r"]= imagecolorallocate($im,255,255,255);
    
$col["\n"]= imagecolorallocate($im,255,255,255);
    for(
$a=0;$a<$tot-1;$a++){  
        for(
$b=0;$b<$largo;$b++){  
            
imagesetpixel ($im,$b,$a,$col[$lineas[$a][$b]]);  
        }  
    }  
    
$width = imagesx($im);  
    
$height = imagesy($im);  
    
$tmp_img = imagecreatetruecolor($propw, $proph);  
    
imagecopyresampled($tmp_img, $im, 0, 0, 0, 0,$propw, $proph, $width, $height);  
    
imagetruecolortopalette($tmp_img,true,256);
    switch(
$scale){
    case
'escala1.gif':
    
$str='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';
    break;
    case
'escala2.gif':
    
$str='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';
    break;
    }
    
$escala = imagecreatefromstring(base64_decode($str));
    
imagepalettecopy($tmp_img,$escala);
    
imagestring($tmp_img,1,10,5,'Generado en '.(getmicrotime()-$inicio).' segundos',$col['M']);
    
imagejpeg($tmp_img,$archivo_imagen,100);
    
imagegif($escala,$scale);
    
imagedestroy($im);
    
imagedestroy($tmp_img);
    
imagedestroy($escala);
}
/*
Función que, a partir de una imagen, produce un txt con una secuencia de caracteres ascii.  
Dicho txt se usa para generar el html que se muestra en el iframe de experimentos-ascii y  
también para recrear la imagen que lo originó.
*/
function devolver_che(){
    
$paleta='$@B%8&WM#NH*oahkbdpqwmZ2AO0DQLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`\'. ';
    
$indice=strlen($paleta);
    
$esc=imagecreate($indice,10);
    
$dif=255/$indice;
    
$ini=0;
        for(
$i=0;$i<$indice;$i++){
            
$ini=$ini+$dif;
            
$col[$paleta[$i]]= imagecolorallocate($esc,intval($ini),intval($ini),intval($ini));
            
$col2[intval($ini)]=$paleta[$i];
            
imageline($esc,$i,0,$i,10,$col[$paleta[$i]]);
        }
    
$str='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';
    
$imagen = imagecreatefromstring(base64_decode($str));
    
imagetruecolortopalette($imagen,true,$indice);
    
imagepalettecopy($imagen,$esc);
    
$imagen2=imagecreate(imagesx($imagen)*6/imagefontwidth(1),imagesy($imagen)*6/imagefontheight(1));
    
imagecopyresampled($imagen2, $imagen, 0, 0, 0, 0,imagesx($imagen)*6/imagefontwidth(1), imagesy($imagen)*6/imagefontheight(1),imagesx($imagen),imagesy($imagen));
    
imagedestroy($esc);
    
$txt='';
        for(
$a=0;$a<imagesy($imagen2);$a++){
            for(
$b=0;$b<imagesx($imagen2);$b++){
                
$color_index = imagecolorat($imagen2, $b, $a);
                
$color_tran = imagecolorsforindex($imagen2, $color_index);
                
$txt.= $col2[$color_tran['red']];
            }
$txt.= "
"
;
        }
    
$archivo='che.txt';
    
$fp=fopen($archivo,'w+');
    
fwrite($fp,$txt);
    
fclose($fp);
    
imagejpeg($imagen,'che.jpg','100');
    
imagedestroy($imagen);
    
imagedestroy($imagen2);
    
$lineas=file($archivo);
    
$tot=count($lineas);
    
$largo=strlen($lineas[0]);
    
$paleta='$@B%8&WM#NH*oahkbdpqwmZ2AO0DQLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`\'.  
    '
;
    
$propw=imagefontwidth(1)*(strlen($lineas[0]))/6;
    
$proph=imagefontheight(1)*$tot/6;
    
$indice=strlen($paleta);
    
$im=imagecreatetruecolor((strlen($lineas[0])),$tot);
    
$dif=255/$indice;
    
$ini=0;
        for(
$i=0;$i<$indice;$i++){
            
$ini=$ini+$dif;
            
$col[$paleta[$i]]= imagecolorallocate($im,intval($ini),intval($ini),intval($ini));
        }
        for(
$a=0;$a<$tot;$a++){
            for(
$b=0;$b<$largo;$b++){
                
imagesetpixel ($im, $b, $a, $col[substr($lineas[$a],$b,1)]);
            }
        }
    
$width = imagesx($im);
    
$height = imagesy($im);
    
$tmp_img = imagecreatetruecolor($propw, $proph);
    
imagecopyresampled($tmp_img, $im, 0, 0, 0, 0,$propw, $proph, $width, $height);
    
imagejpeg($tmp_img,'che2.jpg',100);   
    
imagedestroy($im);
    
imagedestroy($tmp_img);
}
?>
<html>
<head>
<title>DESAFIO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
.principal{
    background-color:#000000;
    border-color:           #000000;
    border-style:           solid;
    border-width:           1px;
    color:                  #FFFFFF;
    font-weight:            bold;
    margin:                 4px;
    padding:                4px;
    text-align:             center;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
.principal2{
    background-color:#000000;
    border-color:           #000000;
    border-style:           solid;
    border-width:           1px;
    color:                  #FFFFFF;
    font-weight:            bold;
    margin:                 4px;
    padding:                4px;
    text-align:             center;
    cursor:                 pointer;
    cursor:                 hand;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
.secundario{
    border-color:           #000000;
    border-style:           solid;
    border-width:           1px;
    color:                  #000000;
    font-weight:            bold;
    margin:                 4px;
    padding:                4px;
    text-align:             center;
    cursor:                 pointer;
    cursor:                 hand;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
.activa{
    background-color:#FFFFCC;
    border-color:           #000000;
    border-style:           solid;
    border-width:           1px;
    color:                  #000000;
    font-weight:            bold;
    margin:                 4px;
    padding:                4px;
    text-align:             center;
    cursor:                 pointer;
    cursor:                 hand;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
p {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
    color: #000000;
    background-color: #FFFFCC;
    border: 1px dashed #000000;
    padding: 5px;
}
</style>
<script>
function ir(url){
    window.location=url;
}
</script>
</head>
<body>
<div id="contenedor_menu" style="width:150px;float:left;">  
  <div class="principal">LIBRERIA GD</div>
  <div id="uno">  
    <div class="<?php if(!isset($_GET['activa']) || $_GET['activa']=='paleta'){?>activa<?php }else{?>secundario<?php } ?>" onClick="ir('desafio.php?activa=paleta')">CON  
      PALETA </div>
    <div class="<?php if(isset($_GET['activa']) && $_GET['activa']=='gradientes'){?>activa<?php }else{?>secundario<?php } ?>" onClick="ir('desafio.php?activa=gradientes')">CON  
      GRADIENTES</div>
  </div>
<div class="principal">EXPERIMENTOS</div>
  <div id="tres">  
    <div class="<?php if(isset($_GET['activa']) && $_GET['activa']=='ascii'){?>activa<?php }else{?>secundario<?php } ?>" onClick="ir('desafio.php?activa=ascii')">ASCII</div>
    <div class="<?php if(isset($_GET['activa']) && $_GET['activa']=='fuentes2'){?>activa<?php }else{?>secundario<?php } ?>" onClick="ir('desafio.php?activa=fuentes2')">FUENTES</div>
  </div>
</div>
<?php if(!isset($_GET['activa']) || $_GET['activa']=='paleta'){
con_paleta($rgb='');
con_paleta($rgb='paleta2',$archivo_imagen='imagen2.jpg');
con_paleta($rgb='paleta3',$archivo_imagen='imagen3.jpg');
con_paleta($rgb='paleta4',$archivo_imagen='imagen4.jpg');
?>
<div id="cuerpo" style="width:580px;float:left;margin-left:10px;">  
  <p>Imágenes generadas con gd y una escala de luces y sombras basada en la densidad visual  
    de caracteres ascii.</p>
  <img src="imagen1.jpg" style="border:1px solid #000000;float:left;margin:5px;"><img src="imagen2.jpg" style="border:1px solid #000000;float:left;margin:5px;"><img src="imagen3.jpg" style="border:1px solid #000000;float:left;margin:5px;"><img src="imagen4.jpg" style="border:1px solid #000000;float:left;margin:5px;">  
  <div style="clear:both;margin:0px;padding:0px;"></div>
  <br />
  <div style="border:1px solid #666666;width:575px;padding:5px;overflow:auto; font-size:11px;">  
   <code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php
<br /></span><span style="color: #FF8000">//código&nbsp;utilizado&nbsp;para&nbsp;crear&nbsp;las&nbsp;imágenes&nbsp;
<br /></span><span style="color: #0000BB">$archivo</span><span style="color: #007700">=</span><span style="color: #DD0000">'marciano.txt'</span><span style="color: #007700">;&nbsp;
<br /></span><span style="color: #0000BB">$lineas</span><span style="color: #007700">=</span><span style="color: #0000BB">file</span><span style="color: #007700">(</span><span style="color: #0000BB">$archivo</span><span style="color: #007700">);&nbsp;
<br /></span><span style="color: #0000BB">$tot</span><span style="color: #007700">=</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$lineas</span><span style="color: #007700">);&nbsp;
<br /></span><span style="color: #0000BB">$largo</span><span style="color: #007700">=</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$lineas</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]);&nbsp;
<br /></span><span style="color: #0000BB">$propw</span><span style="color: #007700">=</span><span style="color: #0000BB">imagefontwidth</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">)*(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$lineas</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]))/<