Desafío Carácter Marciano
#3 Solución de aston
Ver código
|
Ver comentarios (0)
|
Descargar código
Fecha: 11 septiembre 2006
Tamaño: 10662 caracteres
Comentarios: 0
Solución online:
http://unisistemas.com.ar/desafio11/
Valoració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);
?>