Comunidad de diseño web y desarrollo en internet online

GD Imágenes Blanco y Negro tutoriales 1/7

Citar            
MensajeEscrito el 30 Jun 2008 10:03 pm
GD como muchos sabemos es una extensión para PHP que nos permite la manipulación y creación de imagenes de manera dinámica. En este sitio podemos encontrarnos infinidad de tutoriales para aprender a manipular imagenes utilizando esta extensión de PHP.


Existe una función en algunas versiones de PHP5 que nos permite convertir imágenes de color a blanco y negro (escala de grises): imagefilter(). Pero ya que dicha función no está disponible en todos los servidores aún cuando puedan contar con la versión 5 de PHP o posteriores, es que les voy a mostrar una técnica sencilla no sólo para convertir imágenes de color a blanco y negro, sino también para virar las imágenes (darles un ligero tinte) y posterizarlas. Este técnica utiliza funciones que están disponibles desde la versión 4 de PHP, por lo que difícilmente tendremos problemas de incompatibilidad.

La función que vamos a utilizar es imagePaletteCopy(). Esta función copia la paleta de una imagen indexada (fuente) a otra (destino), forzando que la imagen destino utilice los mismos colores que la imagen fuente.

Ahora, ¿qué sucedería si utilizamos una paleta distinta?

Les muestro diferentes resultados, cada uno con su respectiva paleta de colores:

[img]http://www.washeebo.com/sargento/phpgd/docs/images/im_2702.php?escala=2[/img]

Supongamos que esta es la imagen que queremos convertir a escala de grises:



Ahora necesitamos una imagen indexada de 256 tonos desde blanco hasta negro. En este caso utilizaremos una imagen de formato GIF la cual es muy fácil de crear. En PhotoShop comenzamos con una imagen en blanco de no menos de 256 pixeles de ancho. Utilizamos la herramienta de gradiente para pintar desde un extremo al otro con los colores negro y blanco. Después la convertimos a color indexado asignando 256 colores a la paleta. El resultado será similar al siguiente:



No es forzoso indexar a 256 colores. Incluso más adelante podremos ver una imagen que sólo contiene 10 colores. Mientras más colores mayor será la calidad de la imagen. No olvidemos que a mayor calidad también será mayor el tiempo de transferencia.

Ya que tenemos las 2 imágenes, sólo resta crear nuestro código en PHP. Es muy importante que ambas imágenes sean indexadas. Ya que la primer imagen es un jpeg a 24 bits (color verdadero), tendremos primero que indexarla:

Código :

<?php

header( "Content-type: image/gif" );

// Obtenemos la imagen original
$imagen = imagecreatefromjpeg( "imagen.jpg" );

// Convertimos la imagen a indexada
imagetruecolortopalette( $imagen, true, 256 );

// Esta será la imagen para la escala de grises
$escala = imagecreatefromgif( "escala1.gif" );

// Copiamos la paleta de escala a la imagen
imagepalettecopy( $imagen, $escala );

imagedestroy( $escala );

imagegif( $imagen );

imagedestroy( $imagen );

?>


Este será el resultado al utilizar la paleta de la escala de grises en la imagen a colores:

[img]http://www.washeebo.com/sargento/phpgd/docs/images/im_2701.php[/img]

[img]
http://www.washeebo.com/sargento/phpgd/docs/images/im_2702.php?escala=3[/img]


[img]http://www.washeebo.com/sargento/phpgd/docs/images/im_2702.php?escala=4[/img]



[img]http://www.washeebo.com/sargento/phpgd/docs/images/im_2702.php?escala=5[/img]


Digan gracias! a lo menos....
Espero que les sirva!

Por haggard

33 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jun 2008 11:41 pm
Lo siento haggard, por cuestiones de seguridad, el foro sólo permite URLs de imagenes que terminen en "jpg" y no tengan parametros. Si pudieras sacar versiones estaticas de tus ejemplso o usarlos como URLs estaría bien.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 30 Jun 2008 11:51 pm
Ya que decir gracias es obligatorio sólo te diré algo ¿Tú eres sargento? Si no lo eres, ¿sabes que el hotlinking es malo y que no creo que Sargento lo tomé de mucha risa si lo hiciste sin permiso?
¿Cuál es la manía o la necesidad de atención que te obliga a pedir siempre que te den las gracias? Esto no es un foro de manga ni está lleno de leechers. No sé, me parece que debes empaparte un poco más de clab; éste no es un foro como los demás.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.