Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?
15 usuarios Online (0)
Darse de alta en la web | Recuperar password   
Inicio / Desafios / Carácter Marciano / Solucion de aston

Desafío Carácter Marciano

#3 Solución de aston

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

Fecha: 11 septiembre 2006

Tamaño: 10662 caracteres

Comentarios: 0

Solución online:
http://unisistemas.com.ar/desafio11/

Valoración PuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuación 7.00 (3 votos)

"En principio busqué convertir cada caracter en un pixel asignándole un color de acuerdo al valor Ascii.
Si bien obtuve buenos resultados llegue a la conclusión de que escribir todos los caracteres en un archivo de imagen y redimensionarlo daría mejores resultados.
El rendimiento es inferior pero la calidad final hace la diferencia.

Resultados
http://unisistemas.com.ar/desafio11/"

Valora esta solución

<?php
/*
Author: Martín Clasen <martin DOT clasen AT gmail DOT com>
Date: 11/09/2006
Ref: http://php-hispano.net/desafios/11/
Resumen:    En principio busqué convertir cada caracter en un pixel asignándole un color de acuerdo al
            valor Ascii. Si bien obtuve buenos resultados llegue a la conclusión de que escribir todos
            los caracteres en un archivo de imagen y redimensionarlo daría mejores resultados.
            El rendimiento es inferior pero la calidad final hace la diferencia.
*/

$inputFile = 'marcianos.txt';
$lineSpace = 11; //line space
$widthCoef = 5.8;
$outWidth = 300; //image out width
$textColorValues = array(80,0,0); //RGB sepia ;)

function microtime_float()
{
    list(
$useg, $seg) = explode(" ", microtime());
    return ((float)
$useg + (float)$seg);
}

$startTime = microtime_float();

//read input file
$asciiSrc = @file($inputFile)
    or die(
"Cannot open input file: ".$inputFile);

$asciiSrcLines = count($asciiSrc);

//pre image properties
$width = strlen($asciiSrc[0])*$widthCoef;
$height = $asciiSrcLines*$lineSpace;

$im = @imagecreate($width, $height)
    or die(
"Cannot Initialize new GD image stream");

imagecolorallocate($im, 255, 255, 255); //Set Background Color
$textColor = imagecolorallocate($im, $textColorValues[0], $textColorValues[1], $textColorValues[2]);

//Convert file content to writed image
for($y=0;$y<$asciiSrcLines;$y++)
    
imagestring($im, 2, 0, $lineSpace*$y,  $asciiSrc[$y], $textColor);

//imagepng($im);

//resample image
$newH = round($height * ($outWidth / $width)) ;
$imgOut = ImageCreateTrueColor($outWidth,$newH) ;    
imagecopyresampled($imgOut, $im , 0, 0, 0, 0, $outWidth, $newH, $width, $height) ;

$white = imagecolorallocate($imgOut, 255, 255, 255);
imagefilledrectangle($imgOut, 0, 0, 40, 10, $white);
$endTime = microtime_float();
$workTime = round($endTime - $startTime,4);
imagestring($imgOut, 1, 2, 2,  $workTime.'s', $textColor);

//print image
header("Content-type: image/jpeg");
imagejpeg($imgOut);

//destroy images
imagedestroy($im);
imagedestroy($imgOut);

?>

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster