Posts Tagged ‘efecto polaroid’

junio 14, 2009 2

Efecto polaroid con PHP y GD

By in PHP

Hoy vamos a ver una función que nos permite aplicarle un efecto polariod a una imagen.

La función es:

<?php
/**
 * Función para aplicar el efecto polaroid a una imagen.
 *
 * @param string $path Ruta de la imagen
 * @param float $giro Angulo de giro de la imagen
 * @param int $rfondo componente rojo del color de fondo
 * @param int $gfondo componente verde del color de fondo
 * @param int $bfondo componente azul del color de fondo
 * @return resource imagen con el efecto polaroid aplicada 
 */
function efectoPolaroid($path, $giro, $rfondo, $gfondo, $bfondo)
{
	// Cargamos la imagen a la que queremos aplicar el efecto polaroid
	$imgBase = imagecreatefromjpeg($path);
	//Creamos una nueva imagen.
	$img = imagecreatetruecolor(imagesx($imgBase) + 25, imagesy($imgBase) + 65);
	$blanco = imagecolorallocate($img, 255,255,255);

	//Rellenamos la nueva imagen de blanco
	imagefill($img,0,0, $blanco);

	//Copiamos la imagen a la que queremos aplicar el efecto polariod en nuestra nueva imagen.
	imagecopy($img, $imgBase, 11, 11, 0, 0, imagesx($imgBase), imagesy($imgBase));

	//Eliminamos nuestra imagen de memoria, ya que ya no hace falya
	imagedestroy($imgBase);

	//Color del borde
	$color = imagecolorallocate($img, 192,192,192);
	//Le ponemos un borde gris a nuestra imagen.
	imagerectangle($img, 0,0, imagesx($img)-4, imagesy($img)-4, $color);

	//Colores para la sombra
	$gris1 = imagecolorallocate($img, 208,208,208);
	$gris2 = imagecolorallocate($img, 224,224,224);
	$gris3 = imagecolorallocate($img, 240,240,240);

	//Le añadimos una pequeña sombra
	imageline($img, 2, imagesy($img)-3, imagesx($img)-1,imagesy($img)-3,$gris1);	
	imageline($img, 4, imagesy($img)-2, imagesx($img)-1,imagesy($img)-2,$gris2);	
	imageline($img, 6, imagesy($img)-1, imagesx($img)-1,imagesy($img)-1,$gris3);	
	imageline($img, imagesx($img)-3, 2, imagesx($img)-3,imagesy($img)-4,$gris1);	
	imageline($img, imagesx($img)-2, 4, imagesx($img)-2,imagesy($img)-4,$gris2);	
	imageline($img, imagesx($img)-1, 6, imagesx($img)-1,imagesy($img)-4,$gris3);

	//Rotamos la imagen
	$fondo = imagecolorallocate($img, $rfondo, $gfondo, $bfondo);
	$rotatedImg = imagerotate($img, $giro, $fondo);

	//Destruimos la imagen con la que hemos estado trabajando
	imagedestroy($img);

	//Devolvemos la imagen rotada
	return $rotatedImg;
}
?>

Aplicando la función a la siguiente imagen, con angulo de rotación -25º y color de fondo blanco:

imagen para aplicarle el efecto polaroid

imagen para aplicarle el efecto polaroid

Nos queda esta otra:

Imagen con efecto polariod

Imagen con efecto polariod

Ahora la descarga del archivo con la función con el efecto polaroid:

Código con la función del efecto polaroid

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , ,