<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boozox &#187; Imagen Digital</title>
	<atom:link href="http://boozox.net/category/imagen-digital/feed/" rel="self" type="application/rss+xml" />
	<link>http://boozox.net</link>
	<description>Blog de informática, programación, software libre, linux, y mucho más</description>
	<lastBuildDate>Mon, 23 Aug 2010 11:53:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Guia básica para editar imágenes en PHP con GD</title>
		<link>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/</link>
		<comments>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 11:28:21 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[imagen]]></category>
		<category><![CDATA[libreria]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=523</guid>
		<description><![CDATA[Crear y editar imágenes con PHP puede ser muy fácil si tienes instalada la biblioteca GD en tu servidor.
Aunque las opciones que ofrece GD son muy básicas, son suficientes para desarrollar scripts con capacidades muy superiores. Ahora voy a presentaros estas funciones básicas con ejemplos, para que puedas crear aplicaciones más complejas.
Crear la imagen de [...]]]></description>
			<content:encoded><![CDATA[<p>Crear y editar imágenes con PHP <strong>puede ser muy fácil</strong> si tienes instalada la biblioteca GD en tu servidor.</p>
<p>Aunque las opciones que ofrece GD son muy básicas, son suficientes para desarrollar scripts con <strong>capacidades muy superiores</strong>. Ahora voy a presentaros estas <strong>funciones básicas</strong> con ejemplos, para que puedas crear aplicaciones más complejas.</p>
<h2>Crear la imagen de cero o desde un archivo</h2>
<p>Para tratar imágenes en GD trabajamos con recursos o variables tipo resource de imágenes. Esto es una varible que representa a la imagen.</p>
<p>Para crear un nuevo recurso de imagen podemos usar la función <a href="http://es2.php.net/manual/es/function.imagecreate.php">imagecreate()</a> aúnque es más recomendable usar la función <a href="http://es2.php.net/manual/es/function.imagecreatetruecolor.php">imagecreatetruecolor()</a></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">300</span>, <span class="nu0">200</span><span class="br0">&#41;</span>; <span class="co1">//a partir de aqui trabajo con una imagen de 300&#215;200</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im2</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">100</span>, <span class="nu0">100</span><span class="br0">&#41;</span>; <span class="co1">//he creado otra imagen distinta con dimensiones 100&#215;100</span></div>
</li>
</ol>
</div>
<p>Si queremos partir de una imagen ya existente, para convertirla en recurso tendremos que usar la función adecuada dependiendo del formato de la imagen. Los principales formatos son JPEG, PNG y GIF; con las funciones <a href="http://es2.php.net/manual/es/function.imagecreatefromjpeg.php">imagecreatefromjpeg()</a>, <a href="http://es2.php.net/manual/es/function.imagecreatefrompng.php">imagecreatefrompng()</a> y <a href="http://es2.php.net/manual/es/function.imagecreatefromgif.php">imagecreatefromgif()</a> respectivamente.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$miJpeg</span> =imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;miimagen.jpg&#8217;</span><span class="br0">&#41;</span>; <span class="co1">//he creado un recurso a partir del archivo miimagen.jpg</span></div>
</li>
</ol>
</div>
<p>Si quieres ahorrarte el pensar a la hora de crear un recurso a partir de imagen, o desconoces el formato de entrada de la imagen (y quieres que lo haga automáticamente) puedes usar esta función para crear cualquier tipo de imagen.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> newimage<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$im</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">switch</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;http://&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefromstring<span class="br0">&#40;</span> getUrlData<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>jpg&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>gif&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imp</span> = imagecreatefromgif<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = imagesx<span class="br0">&#40;</span><span class="re0">$imp</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = imagesy<span class="br0">&#40;</span><span class="re0">$imp</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>, <span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagefilledrectangle<span class="br0">&#40;</span> <span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="re0">$y</span>, imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopy<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="re0">$imp</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>png&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$im</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> getUrlData<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$ch</span> = curl_init<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_FAILONERROR, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_CONNECTTIMEOUT, <span class="nu0">30</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_RETURNTRANSFER, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$get</span> = curl_exec<span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_close<span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$get</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/newimage.phps">descargar código</a>]</p>
<p>Esta función puede crear una imagen a partir de JPEG, PNG, GIF o URL (requiere CURL)</p>
<p>Si queremos saber las dimensiones de un recurso de imagen, usaremos las funciones <strong>imagesx($im)</strong> e <strong>imagesy($im)</strong> que devuelven el <strong>ancho</strong> y <strong>alto</strong> del recurso, en píxeles, respectivamente.</p>
<h2>Copiar, recortar y redimensionar</h2>
<p>La modificación más básica que podemos hacer a una imagen es recortarla y redimensionarla.</p>
<p>En ambos casos la forma de trabajar es, en primer lugar crear un nuevo recurso con las dimensiones apropiadas, y en segundo lugar copiar de la imagen origen a la imagen destino aplicando el cambio deseado.</p>
<h3>Recortar una imagen</h3>
<p>Para recortar una imagen de, por ejemplo, 500 x 400 en 50px por la derecha y por abajo, haremos lo siguiente:</p>
<ol>
<li>Creamos un nuevo recurso de 500 &#8211; 50 = <strong>450</strong> por 400 &#8211; 50 = <strong>350px</strong></li>
<li>Usamos la función imagecopy para copiar de la imagen origen, en nuestra nueva imagen
<p><em>bool <strong>imagecopy</strong>  ( <strong>resource</strong> $im_destino  , <strong>resource</strong> $im_origen  , <strong>int</strong> $pos_x_destino  , <strong>int</strong> $pos_y_destino  , <strong>int</strong> $pos_x_origen  , <strong>int</strong> $pos_y_origen  , <strong>int</strong> $ancho_origen  , <strong>int</strong> $alto_origen  )</em></p>
</li>
<li>Los dos primeros parámetros son los recursos destino y origen</li>
<li>Los dos siguientes son la posición en eje x e y de la imagen destino, donde queremos comenzar a copiar (en nuestro caso 0,0; porque el eje está arriba y a la izquierda)</li>
<li>Los dos siguientes son el ancho y el alto de la imagen que queremos recortar del aimagen original. En nuestro caso 450 y 350.</li>
</ol>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im_origen</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;mi_imagen.jpg&#8217;</span><span class="br0">&#41;</span>; <span class="co1">//sabemos que mide 500 x 400</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im_destino</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">450</span>, <span class="nu0">350</span><span class="br0">&#41;</span>; <span class="co1">//im_destino contendrá la nueva imagen recortada</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">imagecopy<span class="br0">&#40;</span><span class="re0">$im_destino</span>, <span class="re0">$im_origen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">450</span>, <span class="nu0">350</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// Ahora im_destino es im_origen recortada por abajo y por la derecha 50px</span></div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/crop.phps">descargar código</a>] <strong>Ejemplo</strong>: [<a href="http://boozox.net/jaula/img.jpg">original</a>] [<a href="http://boozox.net/jaula/crop.php">recortada dinámicamente</a>]</p>
<h3>Redimensionar una imagen</h3>
<p>En este ejemplo vamos a redimensionar a la mitad la imagen origen, sea cual sea su tamaño.</p>
<p>Crearemos primero un nuevo recurso con las dimexiones x/2 e y/2, y usaremos la función <a href="http://es2.php.net/manual/es/function.imagecopyresampled.php">imagecopyresampled()</a> (también podríamos usar <a href="http://es2.php.net/manual/es/function.imagecopyresized.php">imagecopyresized()</a>, pero la que vamos a usar suaviza los píxeles interpolándolos – tiene mejor calidad)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im_origen</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="st0">&#8216;foo.png&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ancho</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im_origen</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$alto</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im_origen</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$nuevo_ancho</span> = <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$ancho</span> / <span class="nu0">2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$nuevo_alto</span> = <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$alto</span> / <span class="nu0">2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im_destino</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$nuevo_ancho</span>, <span class="re0">$nuevo_alto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagecopyresampled<span class="br0">&#40;</span><span class="re0">$im_destino</span>, <span class="re0">$im_origen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$nuevo_ancho</span>, <span class="re0">$nuevo_alto</span>, <span class="re0">$ancho</span>, <span class="re0">$alto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// ahora im_destino es la mitad de grande que im_origen</span></div>
</li>
</ol>
</div>
<h2>Dibujar figuras y texto</h2>
<p>Las figuras que GD nos deja pintar son muy básicas, parecidas a las que ofrece el programa Paint</p>
<p>En este punto lo más importante es crear colores para una imagen. Los colores se deben crear y asociar a una imagen mediante la función <a href="http://es2.php.net/manual/es/function.imagerectangle.php">imagecolorallocate()</a>. El color lo indicamos mediante parámetros <a href="http://es.wikipedia.org/wiki/Modelo_de_color_RGB">RGB</a> (Red Green Blue) que podemos extraer fácilmente de cualquier paleta, como la del Photoshop o el Gimp</p>
<h3>Dibujar un rectángulo</h3>
<p>Quizás la figura más simple. Podemos dibujar sólo el borde del rectángulo con la función <a href="http://es2.php.net/manual/es/function.imagerectangle.php">imagerectangle()</a> o el rectangulo relleno de color, con la función <a href="http://es2.php.net/manual/es/function.imagefilledrectangle.php">imagefilledrectangle()</a></p>
<p> bool <strong>imagerectangle</strong>  ( <strong>resource</strong> $imagen  , <strong>int</strong> $x1  , <strong>int</strong> $y1  , <strong>int</strong> $x2  , <strong>int</strong> $y2  , <strong>int</strong> $color  )</p>
<p> bool <strong>imagefilledrectangle</strong>  ( <strong>resource</strong> $imagen  , <strong>int</strong> $x1  , <strong>int</strong> $y1  , <strong>int</strong> $x2  , <strong>int</strong> $y2  , <strong>int</strong> $color  )</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$imagen</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;mi_imagen.jpg&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$negro</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$imagen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//voy a dibujar un rectangulo negro entre las coordenadas (5,5) y (25,15), recuerda que el eje está arriba a la izquierda</span></div>
</li>
<li class="li1">
<div class="de1">imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$imagen</span>, <span class="nu0">5</span>, <span class="nu0">5</span>, <span class="nu0">25</span>, <span class="nu0">15</span>, <span class="re0">$negro</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<h3>Otras figuras</h3>
<p>Existen muchas figuras que puedes dibujar con GD, desde <a href="http://es2.php.net/manual/es/function.imageline.php">una línea</a> hasta un <a href="http://es2.php.net/manual/es/function.imagefilledpolygon.php">polígono</a>, pasando por la <a href="http://es2.php.net/manual/es/function.imagefilledellipse.php">elipse</a> o el <a href="http://es2.php.net/manual/es/function.imagesetpixel.php">píxel</a>. Sólo busca la que más te conviene en la documentación, o combina varias para obtener la figura deseada.</p>
<h3>Escribir texto</h3>
<p>Es <strong>realmente sencillo</strong>. Si no te quieres complicar la vida, puedes usar la función <a href="http://es2.php.net/manual/es/function.imagestring.php">imagestring()</a> que te da la opción de elegir entre <strong>5 fuentes internas</strong> indicando sólo el número de referencia&#8230;</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreate<span class="br0">&#40;</span><span class="nu0">100</span>, <span class="nu0">30</span><span class="br0">&#41;</span>; <span class="co1">//creo una nueva imagen de 100&#215;30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$fondo</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span>; <span class="co1">//blanco. El primer color creado, se utiliza como fondo automaticamente para esa imagen</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$color_texto</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">255</span><span class="br0">&#41;</span>; <span class="co1">//azul</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// escribo la cadena arriba a la izquierda con la fuente #5</span></div>
</li>
<li class="li2">
<div class="de2">imagestring<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">5</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="st0">&quot;¡Hola mundo!&quot;</span>, <span class="re0">$color_texto</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>&#8230; o si quieres <strong>tener más control sobre el estilo</strong>, puedes usar fuentes <a href="http://es.wikipedia.org/wiki/TrueType">TrueType</a> con la función <a href="http://es2.php.net/manual/es/function.imagettftext.php">imagettftext()</a> (en la web <a href="http://www.dafont.com/">DaFont</a> tienes miles de fuentes TrueType gratuitas)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">30</span><span class="br0">&#41;</span>; <span class="co1">//creo una nueva imagen de 400&#215;30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// creo algunos colores</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$blanco</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$gris</span> &nbsp; = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">128</span>, <span class="nu0">128</span>, <span class="nu0">128</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$negro</span> &nbsp;= imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">399</span>, <span class="nu0">29</span>, <span class="re0">$blanco</span><span class="br0">&#41;</span>; <span class="co1">//relleno el fondo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// El texto a pintar</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$texto</span> = <span class="st0">&quot;Boozox.net&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// El archivo ttf, escribe la ruta correctamente!!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$fuente</span> = <span class="st0">&#8216;fuente.ttf&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Agrego una sombra al texto</span></div>
</li>
<li class="li1">
<div class="de1">imagettftext<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">20</span>, <span class="nu0">0</span>, <span class="nu0">11</span>, <span class="nu0">21</span>, <span class="re0">$gris</span>, <span class="re0">$fuente</span>, <span class="re0">$texto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Escribo el texto</span></div>
</li>
<li class="li1">
<div class="de1">imagettftext<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">20</span>, <span class="nu0">0</span>, <span class="nu0">10</span>, <span class="nu0">20</span>, <span class="re0">$negro</span>, <span class="re0">$fuente</span>, <span class="re0">$texto</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/ttftext.phps">descargar código</a>]<br />
<strong>Demo:</strong><br />
<img src="http://boozox.net/jaula/ttftext.php"></p>
<h2>Tratar bien la transparencia en PNG</h2>
<p>Las imágenes PNG admiten un <strong>canal Alpha que indica la opacidad</strong> en cada punto de la imagen, para crear efectos semitransparentes. Si te interesa que esta transparencia se muestre correctamente, deberás calentarte un poco más la cabeza, y tener el canal Alpha siempre en cuenta. Te aconsejo que incluyas <strong>estas dos líneas</strong> después de crear una nueva imagen con transparencia (aunque tendrás que estar siempre atento de que el canal alpha no se pierda!)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="st0">&#8216;mi_transparencia.png&#8217;</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//conservar transparencia</span></div>
</li>
<li class="li1">
<div class="de1">imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Recuerda también que puedes <strong>crear colores con canal de transparencia</strong> usando <a href="http://es2.php.net/manual/es/function.imagecolorallocatealpha.php">imagecolorallocatealpha()</a> en lugar de imagecolorallocate()</p>
<h2>Exportar la imagen para visualizarla</h2>
<p>Después de haber modificado nuestra imagen tal como deseamos, tendremos que <strong>exportarla</strong>. Existe una función para cada formato de salida (<a href="http://es2.php.net/manual/es/function.imagejpeg.php">imagejpeg()</a>, <a href="http://es2.php.net/manual/es/function.imagepng.php">imagepng()</a>, <a href="http://es2.php.net/manual/es/function.imagegif.php">imagegif()</a>, etc&#8230;). Personalmente te recomiendo siempre <strong>exportar en PNG</strong> porque se conserva la <strong>calidad</strong> y la <strong>nitidez</strong> mucho mejor.</p>
<p>En todos los casos tendremos la opción de generar el código de la imagen, si queremos que el archivo PHP simule ser la propia imagen, o indicarle dónde queremos que almacene la imagen resultado.</p>
<p>Para el primer caso, tendremos que indicar mediante las cabeceras que lo que estamos a punto de mostrar <strong>es una imagen</strong>. Para esto usamos la función header() indicando el tipo de archivo en concreto de que se trata (image/jpeg, image/png o image/gif).</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//este codigo se incluiria al final del proceso de edicion, suponiendo que $im es el recurso de la imagen que queremos mostrar</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/png&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagepng<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Una vez creado este archivo, podemos mostrar el resultado en una página HTML <strong>simplemente creando una etiqueta de imagen</strong> que referencie a ese archivo .php</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;img src=&quot;imagen.php&quot; /&gt;</div>
</li>
</ol>
</div>
<p>Si queremos <strong>almacenar en nuestro disco</strong> la imagen resultante, tendremos que pasar como segundo parámetro a la función el nombre del archivo que queremos generar.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">imagepng<span class="br0">&#40;</span><span class="re0">$im</span>,<span class="st0">&#8216;ruta/miarchivo.png&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p><strong style="font-size:1.4em;">Recuerda que me interesa mucho tu opinión. Crees que falta algo? tienes dudas? vas a trabajar con la librería GD ahora que sabes cómo funciona? has hecho experimentos curiosos con imágenes dinámicas? &#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Redimensionar en PHP a tamaño fijo</title>
		<link>http://boozox.net/php/redimensionar-en-php-a-tamano-fijo/</link>
		<comments>http://boozox.net/php/redimensionar-en-php-a-tamano-fijo/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 15:02:55 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[imagen]]></category>
		<category><![CDATA[redimensionar]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=438</guid>
		<description><![CDATA[Ver también Guía básica para editar imágenes en php con GD
Esta es una técnica para redimensionar imágenes a un tamaño fijo (aunque no guarde proporción), sin distorsionar la imágen.
No, no se trata del escalado líquido. Esa técnica es demasiado compleja. Se trata de recortar la imágen para adaptarla a la nueva resolución, perdiendo el mínimo [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Ver también <a href="http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/">Guía básica para editar imágenes en php con GD</a></strong></em></p>
<p>Esta es una técnica para <strong>redimensionar imágenes a un tamaño fijo</strong> (aunque no guarde proporción), <strong>sin distorsionar la imágen</strong>.</p>
<p>No, no se trata del <a href="http://boozox.net/software-libre/escalado-liquido-para-gimp-22-ya-disponible-como-plugin/">escalado líquido</a>. Esa técnica es demasiado compleja. Se trata de <strong>recortar la imágen</strong> para adaptarla a la nueva resolución, perdiendo el <strong>mínimo espacio posible</strong>.</p>
<p><img src="http://boozox.net/wp-content/resizefit.png" alt="" title="resizefit"/></p>
<p style="text-align:center"><em>Foto de <a href="http://www.flickr.com/photos/basajaun/">Basajaun</a> en Flickr</em> <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">Licencia CC(by-nc-sa)</a></p>
<p>Para hacer esto, he desarrollado este <strong>algoritmo</strong>, que paso a compartir con todos para que lo uséis como os de la gana (requiere <a href="http://es2.php.net/manual/es/book.image.php">Biblioteca GD</a>)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> resizeFit<span class="br0">&#40;</span><span class="re0">$im</span>,<span class="re0">$width</span>,<span class="re0">$height</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//Original sizes</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$ow</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>; <span class="re0">$oh</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="co1">//To fit the image in the new box by cropping data from the image, i have to check the biggest prop. in height and width</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$width</span>/<span class="re0">$ow</span> &gt; <span class="re0">$height</span>/<span class="re0">$oh</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nw</span> = <span class="re0">$width</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nh</span> = <span class="br0">&#40;</span><span class="re0">$oh</span> * <span class="re0">$nw</span><span class="br0">&#41;</span> / <span class="re0">$ow</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$px</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$py</span> = <span class="br0">&#40;</span><span class="re0">$height</span> &#8211; <span class="re0">$nh</span><span class="br0">&#41;</span> / <span class="nu0">2</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nh</span> = <span class="re0">$height</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nw</span> = <span class="br0">&#40;</span><span class="re0">$ow</span> * <span class="re0">$nh</span><span class="br0">&#41;</span> / <span class="re0">$oh</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$py</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$px</span> = <span class="br0">&#40;</span><span class="re0">$width</span> &#8211; <span class="re0">$nw</span><span class="br0">&#41;</span> / <span class="nu0">2</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//Create a new image width requested size</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$new</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$width</span>,<span class="re0">$height</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//Copy the image loosing the least space</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; imagecopyresampled<span class="br0">&#40;</span><span class="re0">$new</span>, <span class="re0">$im</span>, <span class="re0">$px</span>, <span class="re0">$py</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$nw</span>, <span class="re0">$nh</span>, <span class="re0">$ow</span>, <span class="re0">$oh</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$new</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/resizefit.phps">Descargar código</a>]</p>
<h2>Cómo utilizar</h2>
<p>Si <strong>no estás familiarizado</strong> con la edición de imágenes en PHP, no te preocupes. Para utilizar la función de arriba, tenemos que pasarle como parámetro una imágen <strong>tipo resource de GD</strong> y <strong>dos números</strong> indicando el ancho y alto que queréis forzar a la foto.</p>
<p>Para que se vea, hay que editar las <strong>cabeceras HTTP</strong> indicando que el contenido es una imágen. Y a este archivo de imágen (aunque sea un PHP) se le puede llamar desde la <strong>etiqueta img</strong> de HTML. Dejemos que hable el código:</p>
<p><strong>imagen.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//Primero creo el resource de la imagen desde el original en JPEG</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;original.jpg&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Ahora uso la función antes definida, con unos parámetros de ancho y alto que yo quiera</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$resized</span> = resizeFit<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">100</span>, <span class="nu0">150</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Indico en la cabecera HTTP que es una imagen</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/png&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">//Por último exporto la nueva imagen</span></div>
</li>
<li class="li1">
<div class="de1">imagepng<span class="br0">&#40;</span><span class="re0">$resized</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p><strong>miPagina.html</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;p&gt;Esta es mi foto redimensionada a 100 x 150:&lt;/p&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;img src=&quot;imagen.php&quot;&gt;</div>
</li>
</ol>
</div>
<h2>Puedes ver un ejemplo en &#8230;</h2>
<p>Esta técnica la uso en <a href="http://gpsia.com/">Gpsia</a> para mostrar las imágenes al tamaño que yo le diga, sin que se vean distorsionadas. Échale un ojo, y de paso ves las rutas tan increíbles que está subiendo la gente.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/php/redimensionar-en-php-a-tamano-fijo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Imaset y Wordpress 2.6</title>
		<link>http://boozox.net/aplicaciones/imaset-y-wordpress-26/</link>
		<comments>http://boozox.net/aplicaciones/imaset-y-wordpress-26/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 22:59:15 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[imaset]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=337</guid>
		<description><![CDATA[Según comentan en AyudaWordpress Imaset es incompatible con Wordpress 2.6.
Pero yo lo he probado y sí me ha funcionado correctamente.
De modo que si tienes algún problema en Imaset, ya sea porque has cambiado de versión o por cualquier otra causa, deja un comentario en este post para que lo solucionemos cuanto antes.
Lo que sí es [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://boozox.net/wp-content/imaset.png' alt='' style="float:right"/>Según comentan en <a href="http://ayudawordpress.com/wordpress-26-plugins-incompatibles/">AyudaWordpress</a> Imaset es incompatible con <a href="http://wordpress.org/download/">Wordpress 2.6</a>.</p>
<p>Pero yo lo he probado y sí me ha funcionado correctamente.</p>
<p>De modo que si tienes algún problema en Imaset, ya sea porque has cambiado de versión o por cualquier otra causa, <strong>deja un comentario en este post</strong> para que lo solucionemos cuanto antes.</p>
<p>Lo que sí es cierto es que Imaset explora toda la carpeta <strong>wp-content</strong> para buscar imágenes, pero no contempla el hecho de que esta carpeta se encuentre <strong>fuera de la ruta usual </strong>(hecho que permite la nueva versión de WordPress). Esto se tendrá en cuenta para próximas versiones.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/aplicaciones/imaset-y-wordpress-26/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Imaset 2.2 liberado</title>
		<link>http://boozox.net/aplicaciones/imaset-2-2-liberado/</link>
		<comments>http://boozox.net/aplicaciones/imaset-2-2-liberado/#comments</comments>
		<pubDate>Tue, 13 May 2008 06:00:23 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=324</guid>
		<description><![CDATA[Descarga Imaset 2.2
La nueva versión de Imaset ya ha llegado!
Imaset 2.2 es compatible con Wordpress 2.5 y además trae algunas mejoras:


Mejor calidad en la previsualización, y más respeto a las imágenes PNG en el canal alpha
Dos nuevos filtros
Transferencia correcta de Marcas de agua con PNG
Interfaz mejorada, y adaptada al nuevo look de WP

Instalación
Instalar Imaset es [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://boozox.net/jaula/imaset_2-2.zip" class="download">Descarga Imaset 2.2</a></p>
<p><strong>La nueva versión de Imaset ya ha llegado!</strong></p>
<p>Imaset 2.2 es <strong>compatible con Wordpress 2.5</strong> y además trae algunas <strong>mejoras</strong>:<br />
<img src="http://boozox.net/wp-content/usandoImaset.png" style="float:right">
<ul>
<li>Mejor calidad en la <strong>previsualización</strong>, y más respeto a las imágenes PNG en el canal alpha</li>
<li>Dos <strong>nuevos filtros</strong></li>
<li>Transferencia correcta de <strong>Marcas de agua con PNG</strong></li>
<li>Interfaz mejorada, y adaptada al <strong>nuevo look</strong> de WP</li>
</ul>
<h2>Instalación</h2>
<p>Instalar Imaset es muy sencillo:</p>
<ul>
<li>Descarga el archivo imaset_2-2.zip</li>
<li>Descomprime el contenido en tu ordenador</li>
<li>Sube la carpeta <strong>imaset/</strong> por ftp a tu servidor, en la carpeta <strong>wp-content/plugins/</strong></li>
<li>Activa el plugin en la sección Plugins del panel de administración Wordpress</li>
<li>Ya está!</li>
</ul>
<h2>Usar la herramienta</h2>
<p><img src="http://boozox.net/wp-content/imaset_botonero.png" style="float:right"> Una vez el plugin está activado, aparecerá en el panel de escritura un botón con la palabra &#8220;Imaset&#8221;. Al pulsar este botón se abrirá el panel de Imaset, mostrando tus imágenes, y los filtros disponibles divididos en categorías.</p>
<h3>Marcas de agua</h3>
<p>Poner marcas de agua de tu web es muy sencillo, y ahora <strong>se respeta la transparencia del PNG</strong>, así que puedes añadir efectos interesantes!</p>
<p>Busca entre los filtros de la categoría &#8220;<strong>Personalizar</strong>&#8221; el de &#8220;<strong>marca de agua</strong>&#8220;. Pulsa en la varita mágica y selecciona el archivo de la imágen (debe estar almacenada en el directorio llamado <strong>src/</strong>) y el lugar donde posicionarlo.</p>
<h3>Filtros incluidos</h3>
<ul>
<li>Sombra</li>
<li>Marco</li>
<li>Reflejo</li>
<li>Reflejo3D</li>
<li>Brillo</li>
<li>Perspectiva</li>
<li>Glossy</li>
<li>Invertir colores</li>
<li>Colorizar</li>
<li>Desenfoque suave</li>
<li>Desenfoque fuerte</li>
<li>Desenfoque gaussiano</li>
<li>Marca de Agua</li>
<li>Redimensionar</li>
</ul>
<p><strong>Recuerda siempre Guardar los cambios antes de cerrar el programa Imaset.</strong></p>
<h2>Agradecimientos:</h2>
<p>Me gustaría agradecer a Patricio Villa, <a href="http://www.francescjosep.net/">Francesc Josep</a>, <a href="http://swordfishcode.com/">Francisco Espinoza</a>, y a todas las personas que usan, apoyan y se interesan por Imaset.</p>
<h2>Feedback necesario</h2>
<p>Para que Imaset avance y mejore, es imprescindible <strong>vuestra ayuda</strong>. Comenta qué te parece, cómo puede mejorar Imaset, si tienes problemas, etc&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/aplicaciones/imaset-2-2-liberado/feed/</wfw:commentRss>
		<slash:comments>80</slash:comments>
		</item>
		<item>
		<title>Imagen promocional de Geo</title>
		<link>http://boozox.net/diseno/imagen-promocional-de-geo/</link>
		<comments>http://boozox.net/diseno/imagen-promocional-de-geo/#comments</comments>
		<pubDate>Sun, 11 May 2008 02:24:58 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[imagen]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[promocion]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=327</guid>
		<description><![CDATA[Hoy he realizado esta imagen promocional de la herramienta GeoGPS. Refleja bastante bien lo que creo que es Geo en su totalidad, y además creo que me ha quedado currado.

Lo he hecho enteramente con Gimp, usando fuentes de Dafont. Ha salido al segundo intento, y he necesitado hacer antes varios bocetos en papel.
Este tipo de [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he realizado esta imagen promocional de la herramienta <a href="http://geogps.es/">GeoGPS</a>. Refleja bastante bien lo que creo que es Geo en su totalidad, y además creo que me ha quedado currado.</p>
<p><img src='http://geogps.es/img/promoGeo.png' alt='Explicacion visual de Geo' class='alignnone' /></p>
<p>Lo he hecho enteramente con <strong>Gimp</strong>, usando fuentes de <a href="http://www.dafont.com">Dafont</a>. Ha salido al segundo intento, y he necesitado hacer antes <strong>varios bocetos</strong> en papel.</p>
<p>Este tipo de gráficos que muestran una herramienta de un vistazo pueden ser muy útiles durante la <strong>promoción</strong>, y creo que voy a empezar con la promoción de Geo dentro de muy poquito.</p>
<p>Por cierto, guardo <strong>una sorpresa muy importante</strong> para esta semana próxima. Estad atentos!</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/diseno/imagen-promocional-de-geo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenfoque gaussiano: cómo funciona + filtro para Imaset</title>
		<link>http://boozox.net/php/desenfoque-gaussiano-como-funciona-filtro-para-imaset/</link>
		<comments>http://boozox.net/php/desenfoque-gaussiano-como-funciona-filtro-para-imaset/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 22:18:08 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://boozox.net/php/desenfoque-gaussiano-como-funciona-filtro-para-imaset/</guid>
		<description><![CDATA[Me he propuesto realizar el filtro de Desenfoque Gaussiano, y lo he conseguido. A continuación os muestro el algoritmo, y la descarga del filtro para quienes usen Imaset 2.1
El algoritmo
El filtro gaussiano consiste en la mezcla de los colores de una imágen para conseguir un efecto de desenfoque. Esta es una explicación muy general, y [...]]]></description>
			<content:encoded><![CDATA[<p>Me he propuesto realizar el filtro de Desenfoque Gaussiano, y lo he conseguido. A continuación os muestro el algoritmo, y la descarga del filtro para quienes usen <a href="http://boozox.net/software-libre/imaset-21-liberado/">Imaset 2.1</a></p>
<h2>El algoritmo</h2>
<p>El filtro gaussiano consiste en la <strong>mezcla de los colores</strong> de una imágen para conseguir un efecto de <strong>desenfoque</strong>. Esta es una explicación muy general, y por supuesto el algoritmo es más complejo que esto.</p>
<p>En primer lugar, consideraremos la imágen como una <strong>matriz de puntos</strong> (pixeles), con unos valores determinados de <strong>rojo, verde y azul</strong>. A partir de aquí, los valores de cada punto de <em>la nueva imágen</em>, serán una combinación de los puntos cercanos. De esta forma, si un punto es de color rojo, y cercano a él hay puntos negros, este rojo se oscurecerá (y los negros se enrojecerán).</p>
<div style="text-align:center"><img src='http://boozox.net/wp-content/intercambio_pixels1.jpg' alt='Intercambio de color entre pixeles cercanos' /></div>
<p>Pero para determinar cuáles son los pixeles que son cercanos, y los que no, se debe especificar al filtro un radio de acción. Con esto, si por ejemplo indicamos un radio de 10 pixeles, cada píxel de la nueva imágen se verá modificado por los todos los pixeles a menos de 10 unidades de distancia. Pero no todos los pixeles modifican con la misma &#8220;fuerza&#8221;, cuanto más cerca estén del pixel que se está modificando, más valor tendrán en el cálculo del nuevo color. Es aquí donde aparece nuestro simpático amigo <a href="http://es.wikipedia.org/wiki/Carl_Friedrich_Gauss">Gauss</a>.</p>
<p>La función de la <a href="http://es.wikipedia.org/wiki/Funci%C3%B3n_gaussiana">distribución Gaussiana</a> va a ayudarnos a adjudicar cuánto aporta cada pixel, en función de lo cerca o lejos que se encuentre. Esta función tiene la forma <img src='http://boozox.net/wp-content/distribucion_gaussiana.png' alt='distribucion_gaussiana.png' /> donde <em>(x-b)</em> es la distancia entre el pixel que está siendo modificado y el píxel del que se está tomando el valor, <em>a</em> y <em>c</em> valen 1, y f(x) resulta un número Real entre 0 y 1 que representa el porcentaje de influencia.</p>
<h2>Resumiendo</h2>
<p>Lo que está claro es que hay que mezclar los píxeles entre sí, y que usaremos un radio de influencia en que cuanto más lejos está un píxel de otro, menos le afecta.</p>
<p>Después de analizar el problema, y aplicar una fórmula estadística, podemos concluir que el <strong>valor de cada pixel</strong> es: </p>
<blockquote><p>La suma de todos los píxeles dentro del radio R, multiplicados cada uno por <img src='http://boozox.net/wp-content/distribucion_gaussiana.png' alt='distribucion_gaussiana.png' /> (tal y como se ha descrito antes), y todo esto, dividido entre la suma de todos los valores de la fórmula <img src='http://boozox.net/wp-content/distribucion_gaussiana.png' alt='distribucion_gaussiana.png' /> en los puntos que intervienen.</p></blockquote>
<p>Y todo eso es sólo para calcular uno de los tres componentes (Rojo, Verde o Azul) de <strong>un sólo pixel</strong>.</p>
<p>De modo que, a falta de una <em>fórmula mágica</em> de optimización, el efecto de desenfoque Gaussiano no es ninguna broma, realiza una <strong>cantidad muy elevada de cálculos</strong> (que aumenta junto al Radio y al tamaño de la imágen).</p>
<h2>El archivo de descarga</h2>
<p>Aquí os dejo el <strong>código fuente</strong> y la <strong><a href="http://boozox.net/jaula/gaussian.zip">descarga</a></strong> del filtro Desenfoque Gaussiano para <a href="http://codis.boozox.net/proyecto/Imaset">Imaset 2.1</a><br />
Tened en cuenta que, como he dicho, es un filtro muy costoso, y aplicarlo puede llevar bastantes segundos.</p>
<p>La forma de poder usarlo es: descargar el archivo ZIP, descomprimir su contenido, y subir el archivo <em>gaussian.xml</em> al directorio &#8220;<em>/filters</em>&#8221; y el archivo<em> es_ES.php</em> al directorio &#8220;<em>/lang</em>&#8221;</p>
<h2>Ejemplo del filtro Gaussiano en Imaset</h2>
<p><img src='http://boozox.net/wp-content/carl_friedrich_gauss_2.jpg' alt='Gauss' /><img src='http://boozox.net/wp-content/carl_friedrich_gauss.jpg' alt='Gauss Desenfocado' /><br />
Como se puede apreciar, realiza un toque de suavizado, si se aplica poco desenfoque (poco radio).</p>
<h2>Código fuente</h2>
<p>Os dejo como siempre el código fuente de este filtro. </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;filter&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;name&gt;gaussian_blur&lt;/name&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;category&gt;effect&lt;/category&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;parameters&gt;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;pa&gt;<span class="re0">$rad</span>=<span class="nu0">5</span>&lt;/pa&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/parameters&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;function&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<span class="re0">$rad</span><span class="br0">&#41;</span> <span class="re0">$rad</span> = <span class="nu0">5</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sx</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sy</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$x</span>=-<span class="re0">$rad</span>;<span class="re0">$x</span>&lt;<span class="re0">$sx</span>+<span class="re0">$dar</span>;<span class="re0">$x</span>++<span class="br0">&#41;</span> <span class="co1">// meto en una matriz los valores de colores</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$y</span>=-<span class="re0">$rad</span>;<span class="re0">$y</span>&lt;<span class="re0">$sy</span>+<span class="re0">$rad</span>;<span class="re0">$y</span>++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$x</span>&lt;<span class="nu0">0</span> || <span class="re0">$y</span>&lt;<span class="nu0">0</span> || <span class="re0">$x</span>&gt;<span class="re0">$sx</span> || <span class="re0">$y</span>&gt;<span class="re0">$sy</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imatrix</span><span class="br0">&#91;</span><span class="re0">$x</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$y</span><span class="br0">&#93;</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$imaset</span>-&gt;<span class="me1">Red</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Green</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Blue</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rgb</span> = ImageColorAt<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="re0">$x</span>, <span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$r</span> = <span class="br0">&#40;</span><span class="re0">$rgb</span> &gt;&gt; <span class="nu0">16</span><span class="br0">&#41;</span> &amp; 0xFF;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$g</span> = <span class="br0">&#40;</span><span class="re0">$rgb</span> &gt;&gt; <span class="nu0">8</span><span class="br0">&#41;</span> &amp; 0xFF;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$b</span> = <span class="re0">$rgb</span> &amp; 0xFF;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imatrix</span><span class="br0">&#91;</span><span class="re0">$x</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$y</span><span class="br0">&#93;</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="re0">$r</span>,<span class="re0">$g</span>,<span class="re0">$b</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Ahora voy a poner valores (calculandolos previamente)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$x</span>=<span class="nu0">0</span>; <span class="re0">$x</span>&lt;<span class="re0">$sx</span>; <span class="re0">$x</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// recorro el array antes construido, pixel a pixel</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$y</span>=<span class="nu0">0</span>; <span class="re0">$y</span>&lt;<span class="re0">$sy</span>; <span class="re0">$y</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">&#40;</span><span class="re0">$su1R</span>,<span class="re0">$su1G</span>,<span class="re0">$su1B</span>,<span class="re0">$su2</span>,<span class="re0">$sue</span><span class="br0">&#41;</span>; <span class="co1">// inicializo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="re0">$x</span>-<span class="re0">$rad</span>; <span class="re0">$i</span>&lt;<span class="re0">$x</span>+<span class="re0">$rad</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// circundantes en eje x</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$j</span>=<span class="re0">$y</span>-<span class="re0">$rad</span>; <span class="re0">$j</span>&lt;<span class="re0">$y</span>+<span class="re0">$rad</span>; <span class="re0">$j</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="co1">// circundantes en eje y</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sue</span> = <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><a href="http://www.php.net/pow"><span class="kw3">pow</span></a><span class="br0">&#40;</span><span class="nu0">2.7</span>,-<span class="br0">&#40;</span><a href="http://www.php.net/pow"><span class="kw3">pow</span></a><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$i</span>-<span class="re0">$x</span><span class="br0">&#41;</span>,<span class="nu0">2</span><span class="br0">&#41;</span> + <a href="http://www.php.net/pow"><span class="kw3">pow</span></a><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$j</span>-<span class="re0">$y</span><span class="br0">&#41;</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>*<span class="nu0">100</span>,<span class="nu0">4</span><span class="br0">&#41;</span>; <span class="co1">//valor gaussiano de peso</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$su1R</span> += <span class="re0">$sue</span> * <span class="re0">$imatrix</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$j</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>; <span class="co1">//Sumando de rojos</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$su1G</span> += <span class="re0">$sue</span> * <span class="re0">$imatrix</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$j</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>; <span class="co1">//Sumando de verdes</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$su1B</span> += <span class="re0">$sue</span> * <span class="re0">$imatrix</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re0">$j</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>; <span class="co1">//Sumando de azules</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$su2</span> += <span class="re0">$sue</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagesetpixel<span class="br0">&#40;</span><span class="re0">$im</span>,<span class="re0">$x</span>,<span class="re0">$y</span>,imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>,<a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$su1R</span>/<span class="re0">$su2</span><span class="br0">&#41;</span>,<a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$su1G</span>/<span class="re0">$su2</span><span class="br0">&#41;</span>,<a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$su1B</span>/<span class="re0">$su2</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$im</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/function&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/filter&gt;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/php/desenfoque-gaussiano-como-funciona-filtro-para-imaset/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Efecto 3DReflect para Imaset</title>
		<link>http://boozox.net/codigo/efecto-3dreflect-para-imaset/</link>
		<comments>http://boozox.net/codigo/efecto-3dreflect-para-imaset/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 21:11:33 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://boozox.net/codigo/efecto-3dreflect-para-imaset/</guid>
		<description><![CDATA[Acado de crear un nuevo efecto para Imaset, el 3DReflect. Si estás usando la versión 2.1, podrás utilizar este nuevo filtro subiendo un pequeño archivo XML a la carpeta &#8220;/filters&#8221; del plugin.
El filtro
El efecto es similar al ya existente de Reflejo. La diferencia es que este efecto es tridimensional, dando un efecto de profundidad.

Descargas
Descarga el [...]]]></description>
			<content:encoded><![CDATA[<p>Acado de crear un nuevo efecto para Imaset, <strong>el 3DReflect</strong>. Si estás usando la <a href="http://boozox.net/software-libre/imaset-21-liberado/">versión 2.1</a>, podrás utilizar este nuevo filtro subiendo un pequeño archivo XML a la carpeta &#8220;/filters&#8221; del plugin.</p>
<h2>El filtro</h2>
<p>El efecto es similar al ya existente de Reflejo. La diferencia es que este efecto <strong>es tridimensional</strong>, dando un efecto de profundidad.</p>
<div style="text-align:center"><a href="http://flickr.com/photos/alexbarros/2113213898/"><img src='http://boozox.net/wp-content/stratosfera.jpg' alt='Cielo Abstracto' /></a></div>
<h2>Descargas</h2>
<p>Descarga el archivo de <strong><a href="http://boozox.net/jaula/3dreflect.zip">filtro 3DReflect</a></strong> y súbelo a la carpeta &#8220;/filters&#8221; para empezar a disfrutarlo.Se adjunta también el archivo de idioma Español es_ES.php, para tener la traducción de los parámetros de este nuevo plugin (súbelo a tu carpeta &#8220;/lang&#8221;).</p>
<h2>Código fuente</h2>
<p>Este es el código fuente del archivo XML. Todabía no he escrito la API para desarrollar filtros de Imaset, pero con este ejemplo, puede que alguien ya se atreva a intentar algo.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;filter&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;name&gt;3DReflect&lt;/name&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;category&gt;decoration&lt;/category&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;parameters&gt;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;pa&gt;<span class="re0">$s</span>=<span class="nu0">30</span>&lt;/pa&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;pa&gt;<span class="re0">$oi</span>=<span class="nu0">60</span>&lt;/pa&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;pa&gt;<span class="re0">$pr</span>=<span class="nu0">25</span>&lt;/pa&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/parameters&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;function&gt;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//controlo los limites</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="re0">$imaset</span>-&gt;<span class="me1">lim</span><span class="br0">&#40;</span><span class="re0">$s</span>,<span class="nu0">300</span>,<span class="nu0">1</span><span class="br0">&#41;</span>; <span class="co1">//tamaño</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$oi</span> = <span class="re0">$imaset</span>-&gt;<span class="me1">lim</span><span class="br0">&#40;</span><span class="re0">$oi</span>,<span class="nu0">100</span>,<span class="nu0">5</span><span class="br0">&#41;</span>; <span class="co1">//opacidad inicial</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pr</span> = <span class="re0">$imaset</span>-&gt;<span class="me1">lim</span><span class="br0">&#40;</span><span class="re0">$pr</span>,<span class="nu0">100</span>,<span class="nu0">0</span><span class="br0">&#41;</span>; <span class="co1">//profundidad</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sx</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sy</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$s</span>&gt;<span class="re0">$sy</span><span class="br0">&#41;</span> <span class="re0">$s</span> = <span class="re0">$sy</span><span class="nu0">-1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="re0">$sx</span><span class="nu0">+2</span>*<span class="re0">$pr</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="re0">$sy</span>+<span class="re0">$s</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$reflekt</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$color</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$reflekt</span>, <span class="re0">$imaset</span>-&gt;<span class="me1">Red</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Green</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Blue</span><span class="br0">&#41;</span>; <span class="co1">//Fondo</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$reflekt</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="re0">$y</span>, <span class="re0">$color</span><span class="br0">&#41;</span>; <span class="co1">//Relleno el fondo&nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopy<span class="br0">&#40;</span><span class="re0">$reflekt</span>, <span class="re0">$im</span>, <span class="re0">$pr</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$sx</span>, <span class="re0">$sy</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$reflekt</span> = <span class="re0">$imaset</span>-&gt;<span class="me1">resize</span><span class="br0">&#40;</span><span class="re0">$reflekt</span>,<span class="st0">&#8216;200%&#8217;</span>,<span class="st0">&#8221;</span><span class="br0">&#41;</span>; <span class="co1">//resize al doble por mejorar calidad</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//hago el efecto conico de reflejo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>;<span class="re0">$i</span>&lt;=<span class="re0">$s</span>*<span class="nu0">2</span>;<span class="re0">$i</span>++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopyresampled<span class="br0">&#40;</span><span class="re0">$reflekt</span>, <span class="re0">$im</span>, <span class="re0">$pr</span>*<span class="nu0">2</span>-<span class="br0">&#40;</span><span class="re0">$pr</span>*<span class="re0">$i</span>/<span class="re0">$s</span><span class="br0">&#41;</span>, <span class="re0">$sy</span>*<span class="nu0">2</span>+<span class="re0">$i</span>, <span class="nu0">0</span>, <span class="re0">$sy</span>-<span class="br0">&#40;</span><a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$i</span>/<span class="nu0">2</span><span class="br0">&#41;</span><span class="nu0">+1</span><span class="br0">&#41;</span>, <span class="re0">$sx</span>*<span class="nu0">2</span><span class="nu0">+2</span>*<span class="br0">&#40;</span><span class="re0">$pr</span>*<span class="re0">$i</span>/<span class="re0">$s</span><span class="br0">&#41;</span>, <span class="nu0">1</span>, <span class="re0">$sx</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$reflekt</span> = <span class="re0">$imaset</span>-&gt;<span class="me1">resize</span><span class="br0">&#40;</span><span class="re0">$reflekt</span>,<span class="st0">&#8216;50%&#8217;</span>,<span class="st0">&#8221;</span><span class="br0">&#41;</span>; <span class="co1">//resize a la mitad</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//finalmente creo el efecto transparencia con una imagen comodin</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$bla</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$color</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$bla</span>, <span class="re0">$imaset</span>-&gt;<span class="me1">Red</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Green</span>,<span class="re0">$imaset</span>-&gt;<span class="me1">Blue</span><span class="br0">&#41;</span>; <span class="co1">//Fondo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$bla</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="nu0">1</span>, <span class="re0">$color</span><span class="br0">&#41;</span>; <span class="co1">//Relleno el fondo</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>;<span class="re0">$i</span>&lt;<span class="re0">$s</span>;<span class="re0">$i</span>++<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopymerge<span class="br0">&#40;</span><span class="re0">$reflekt</span>, <span class="re0">$bla</span>, <span class="nu0">0</span>, <span class="re0">$sy</span>+<span class="re0">$i</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="nu0">1</span>, <span class="nu0">100</span>-<a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$oi</span>-<span class="br0">&#40;</span><span class="re0">$i</span>*<span class="re0">$oi</span>/<span class="re0">$s</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$reflekt</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/function&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/filter&gt;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/codigo/efecto-3dreflect-para-imaset/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Imaset 2.1 Liberado</title>
		<link>http://boozox.net/software-libre/imaset-21-liberado/</link>
		<comments>http://boozox.net/software-libre/imaset-21-liberado/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 18:22:42 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Novedades]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/imaset-21-liberado/</guid>
		<description><![CDATA[
nueva version 2.2 Al fin me decido a liberar la versión 2.1 de Imaset.
El plugin lleva unas semanas finalizado, pero he estado probándolo en diferentes servidores y distintos navegadores y, dada la gran cantidad de modificaciones internas que trae este nuevo plugin, han surgido una serie de incompatibilidades.
Sin embargo he decidido lanzar esta versión, ya [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://boozox.net/aplicaciones/imaset-2-2-liberado/" class="download"><br />
nueva version 2.2</a> Al fin me decido a liberar la versión 2.1 de Imaset.</p>
<p>El plugin lleva unas semanas finalizado, pero he estado probándolo en diferentes servidores y distintos navegadores y, dada la gran cantidad de modificaciones internas que trae este nuevo plugin, han surgido una serie de incompatibilidades.</p>
<p>Sin embargo he decidido lanzar esta versión, ya que la considero estable (a falta de solucionar algunos bugs) para que quien no se vea afectado por estas incompatibilidades pueda ir disfrutando.</p>
<h2>Problemas conocidos</h2>
<p>Fundamentalmente dos: </p>
<ul>
<li>Dada la nueva implementación de filtros almacenados en archivos externos, hay dos filtros que en algunos servers <em>no dan buenos resultados</em>. Estoy trabajando en solucionarlo para posteriores versiones</li>
<li><em>No funciona en Internet Explorer 6</em>. Esto no me sorprende&#8230; es cosa del JavaScript, y también trabajo en hacerlo compatible.</li>
</ul>
<p>Y ahora, lo más importante:</p>
<h2>Novedades de Imaset 2.1</h2>
<p><span id="more-222"></span>
<ul><img src="http://boozox.net/wp-content/imaset_2-10.png" alt="imaset_2-10.png"  style="float:right"/></p>
<li><strong>Aplicación directa o personalizada</strong>. Todos los filtros pueden ser aplicados con un sólo click (con sus valores por defecto). Pero muchos de ellos incorporan también la posibilidad de personalizar a tu gusto los parámetros, así obtienes el resultado óptimo.</li>
<li><strong>Navegación más rápida</strong>. En esta nueva versión es JavaScript quien tiene el papel de la navegación, mucho más que Ajax. De esta forma todas las tareas resultan el doble de rápidas.</li>
<li><strong>Visualización del historial</strong>. Puedes ver los filtros que has aplicado a una imágen, y eliminar uno por enmedio que no te guste.</li>
<li><strong>Filtros externos</strong>. Existen dos tipos de filtros en Imaset 2.1: los del núcleo, que son muy básicos, y una serie de filtros almacenados exteriormente en archivos, dentro de la carpeta <em>src/</em>. Esto permite crear nuevos filtros usando una API (que publicaré próximamente), y así añadirte nuevos filtros, subiendo un simple archivo XML</li>
<li><strong>Personalización</strong>. En el archivo <em>settings.php</em> tienes una serie de parámetros que puedes personalizar. Los dos más importantes son el <strong>color de fondo y el idioma</strong>. El color de fondo es respetado por todos los filtros. El idioma puede ser Español, Inglés, Chino o Italiano.</li>
</ul>
<h2>Filtros disponibles:</h2>
<ul>
<h3>Descoración</h3>
<li>Sombra</li>
<li>Marco</li>
<li>Reflejo</li>
<li>Perspectiva</li>
<li>Ondular</li>
<h3>Color</h3>
<li>Invertir colores</li>
<li>Colorizar</li>
<h3>Efectos</h3>
<li>Desenfoque suave</li>
<li>Desenfoque fuerte</li>
<li>Encontrar bordes</li>
<h3>Personalizado</h3>
<li>Marca de agua</li>
<li>Redimensionar</li>
</ul>
<h2>Código fuente</h2>
<p>Puedes ver el código fuente de esta nueva versión <a href="http://codis.boozox.net/proyecto/Imaset">descargándotela</a> o diréctamente <a href="http://codis.boozox.net/zip/URL::codis.boozox.net/bin/imaset_2-1.zip">en Codis</a>.</p>
<h2>Ejemplos de imágenes tratadas con Imaset:</h2>
<p><img src='http://boozox.net/wp-content/camilla_earphone.jpg' alt='camilla_earphone.jpg' /></p>
<p><img src='http://boozox.net/wp-content/birthday_cake1.jpg' alt='Tarta' /></p>
<p><img src='http://boozox.net/wp-content/flash-logo1.jpg' alt='flash-logo1.jpg' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/imaset-21-liberado/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Novedades de Imaset 2.1</title>
		<link>http://boozox.net/novedades/novedades-de-imaset-21/</link>
		<comments>http://boozox.net/novedades/novedades-de-imaset-21/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 13:57:22 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Boozox]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Novedades]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://boozox.net/novedades/novedades-de-imaset-21/</guid>
		<description><![CDATA[ Imaset 2.1 está muy cerca. La primera beta ya está siendo distribuida entre algunos beta-testers, y la versión definitiva no tardará mucho en llegar.
Dado el éxito que tuvo la versión 2.0 del plugin, para esta siguiente versión (2.1) he decidido reestructurar todo el código, de arriba a abajo, para hacerlo mucho más modulable.
En esta [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://boozox.net/wp-content/imaset_2-10.png' alt='imaset_2-10.png' style="float:right"/> Imaset 2.1 <strong>está muy cerca</strong>. La primera beta ya está siendo distribuida entre algunos beta-testers, y la versión definitiva no tardará mucho en llegar.</p>
<p>Dado el éxito que tuvo la versión 2.0 del plugin, para esta siguiente versión (2.1) he decidido reestructurar todo el código, de arriba a abajo, para hacerlo mucho más modulable.</p>
<p>En esta nueva versión, se incluye un archivo <strong>settings.php</strong>, en el cual pueden configurarse algunas características, como el color de fondo de tu web, el idioma que quieres para la interfaz, y algunas características más.</p>
<p>El peso de la navegación se ha llevado al JavaScript, con lo que el plugin resulta notablemente más fluido, rápido y cómodo.</p>
<p>Una de las novedades más importantes, es que <strong>los filtros se almacenan en forma de archivo XML</strong> (excepto los considerados del <em>&#8220;núcleo&#8221;</em> de Imaset). Esto tiene tres ventajas:</p>
<ul>
<li>La <strong>administración de filtros es sencilla</strong>, basta con borrar el filtro que no quieres, o subir por FTP uno nuevo</li>
<li>Si quieres disfrutar de un nuevo filtro, basta con <strong>subir un pequeño archivo</strong>.</li>
<li>Los programadores no tienen que entender cómo funciona interiormente imaset. Los filtros están muy estandarizados, y <strong>resulta muy fácil crear nuevos, siguiendo la API</strong> que próximamente será publicada.</li>
</ul>
<p>Por último, recordar que el plugin estará disponible en algunos idiomas. En principio en <em>Español, Inglés, Chino, Italiano y Rumano</em>. Por defecto el plugin se muestra en inglés, pero puede modificarse muy fácilmente en settings.php</p>
<p>Este fin de semana se realizarán los beta-testeos y las traducciones oportunas, y muy pronto será el estreno mundial.</p>
<p>P.D.: También guardo otra pequeña sorpresa sobre Imaset, pero tendréis que esperar un poco más para conocerlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/novedades/novedades-de-imaset-21/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fin de los ojos rojos (redeye) con Gimp</title>
		<link>http://boozox.net/software-libre/fin-de-los-ojos-rojos-redeye-con-gimp/</link>
		<comments>http://boozox.net/software-libre/fin-de-los-ojos-rojos-redeye-con-gimp/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 20:09:49 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/fin-de-los-ojos-rojos-redeye-con-gimp/</guid>
		<description><![CDATA[A veces haciendo una fotografía, al usar el flash, las pupilas de nuestros ojos se vuelven de color rojo o naranja y llega a dar una sensación de &#8220;vampiro&#8221;, algo extraña y muchas veces rozando lo ridiculo&#8230; Hay muchas formas de eliminar ese rojo, o al menos ocultarlo, de forma que la vista del fotografiado [...]]]></description>
			<content:encoded><![CDATA[<p>A veces haciendo una fotografía, al usar el flash, las pupilas de nuestros ojos se vuelven de color rojo o naranja y llega a dar una sensación de &#8220;vampiro&#8221;, algo extraña y muchas veces rozando lo ridiculo&#8230; Hay muchas formas de eliminar ese rojo, o al menos ocultarlo, de forma que la vista del fotografiado sea más agradable.</p>
<p>Usando el programa The Gimp podemos solucionar este problema de forma rápida con solamente seleccionar con un rectángulo la parte afectada y aplicando el plugin.</p>
<p>El plúgin <a href="http://registry.gimp.org/plugin?id=4212">Redeye</a> en su versión <a href="http://registry.gimp.org/file/redeye.c?action=download&#038;id=9172">0.3 (solo para Linux)</a> y 0.2 (para Linux y Windows) se puede descargar por <a href="http://registry.gimp.org/">&#8220;registry&#8221; de plugins para Gimp</a>.<br />
Para compilar (e instalar) ejecutar en la consola de Linux:<br />
<code>$ gimptool-2.0 --install redeye.c</code></p>
<p>Un ejemplo:</p>
<p style="text-align: center;">
<img src='http://boozox.net/wp-content/redeye1alexjose.jpg' alt='redeye1alexjose.jpg' />
</p>
<p>La primera imagen es la original; la segunda la retocada con los valores personalizados (los cuales recomiendo) 50, 50, 0; y la tercera está hecha con los valores &#8220;automáticos&#8221; del plugin (un poco&#8230; débiles).</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/fin-de-los-ojos-rojos-redeye-con-gimp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
