PHP: Aspectratio, redimension de imagenes al vuelo.

Author: Adrià Cidre  |  Category: PHP

Buenas a todos,

En uno de los comentarios de uno de los posts de este blog, Víctor nos comentaba como podía redimensionar imágenes con PHP, hace años que utilizo esta técnica, y personalmente la llamo aspectratio.

El script en cuestión recibe tres parámetros:

p: el path donde está la imagen original, puede ser una url o un fichero en el servidor.
w: el ancho máximo que queremos que tenga la imagen final
h: el alto máximo que queremos que tenga la imagen final.


$datos = getimagesize($nombre);
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);} 

$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio); 

if($altura>$hmax){$anchura2 = $hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura); 

if($datos[2]==1)
	{
	$trnprt_indx  = imagecolortransparent($img);
	$trnprt_color = imagecolorsforindex($img, $trnprt_indx);
	$trnprt_indx  = imagecolorallocate($thumb, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

	imagefill($thumb, 0, 0, $trnprt_indx);
	imagecolortransparent($thumb, $trnprt_indx);
	}
elseif ($datos[2]==3)
	{
	imagealphablending($thumb, false);
	$color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
	imagefill($thumb, 0, 0, $color);
	imagesavealpha($thumb, true);
	}

imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]); 

if($datos[2] == 1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2] == 2){header("Content-type: image/jpeg"); imagejpeg($thumb);}
if($datos[2] == 3){header("Content-type: image/png"); imagepng($thumb); } 

imagedestroy($thumb); 

Este script escupe por pantalla la imagen, con lo que podemos llamarla para que nos convierta imágenes al vuelo.

Esta es una opción muy válida si no tienes acceso a instalar librerías en tu hosting. Si puedes hacerlo, deberías echarle un ojo a ImageMagick que ofrece unos resultados infinitamente mejores que no la librería GD (más extendida en hostings).

Javascript – Crear un Bookmark

Author: Adrià Cidre  |  Category: Java Script

Bueno como no podia ser de otra manera, Firefox, IE y Opera se lo montan diferente a la hora de gestionar los bookmarks, por lo que será necesario la siguiente función para poder crear un enlace que nos permita añadir un bookmark en cualquiera de los tres navegadores anteriores.


function CreateBookmarkLink(title, url) {
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( url, title); }
	else if(window.opera && window.print) { // Opera Hotlist
		return true; }
 }