script redimensionar imagenes gif’s y png’s transparentes
Viernes, 29 de Agosto de 2008Este post es la continuación de redimensionar imagens gif y png transparentes
Ahora un ejemplo completo donde tenemos una función que nos pasan el string de una imagen y devolvemos ese string redimensionado. Esta preparado para utilizarse al recoger la información de un formulario con imagenes. Del Array $_FILES[] obtendremos el string de la imagen tal que así
-
-
$extensión=$_FILES[$nombre_Foto_Formulario]['type'];
-
-
$ancho=150;
-
-
//ahora llamamos a la funcion de redimensionar
-
-
$imagen_redimensionada=redimensionarImatge($stringConLaFoto,$extension,$ancho)
-
#************************************************************************************
-
# redimensionaImatge:
-
#
-
# Donada una imatge es redimensiona a l'amplada o alçada passades com a paràmetre.
-
# Si no se li passen les mesures, s'agafaran les dimensions de les variables
-
# globals, que es troben a l'inicialitzador, MIDA_IMATGE_AMPLADA i MIDA_IMATGE_ALCADA
-
#
-
# Autor: Marc + Cristian en controlzeta.net
-
# Fecha creacion: 24/04/08
-
-
# ultima modificacion 28/08/2008
-
#
-
#************************************************************************************
-
-
function redimensionarImatge($imatge,$extensio,$amplada=FALSE,$alcada=FALSE) {
-
$original = imagecreatefromstring($imatge);
-
$mides[] = imagesx($original); // $mides[0] ANCHURA
-
$mides[] = imagesy($original); // $mides[1] ALTURA
-
-
//echo '<br>AMPLADA R:'.$amplada;
-
//echo '<br>AMPLADA R:'.$alcada;
-
//echo '<br>AMPLADA:'.$mides[0];
-
//echo '<br>AMPLADA:'.$mides[1];
-
-
if ( !( ($mides[0]==$amplada or $amplada==FALSE) AND ($mides[1]== $alcada or $alcada==FALSE) ) ){ //comprueba Que no se redimendsione al mismo tamaño Critian 19-08-2008
-
-
if($amplada || $alcada) {
-
$midaHoritzontal = $amplada;
-
$midaVertical = $alcada;
-
-
if( $alcada && ($mides[0]>(2*$mides[1])) ) {
-
$midaHoritzontal = 100;
-
} elseif(!$alcada) {
-
$midaVertical = $mides[1];
-
}
-
} elseif($mides[0] <= MIDA_IMATGE_AMPLADA && $mides[1] <= MIDA_IMATGE_ALCADA) {
-
$midaHoritzontal = $mides[0];
-
$midaVertical = $mides[1];
-
$noRedimensionar = true;
-
} else {
-
$midaHoritzontal = MIDA_IMATGE_AMPLADA;
-
$midaVertical = MIDA_IMATGE_ALCADA;
-
}
-
}else{
-
$midaHoritzontal = $mides[0];
-
$midaVertical = $mides[1];
-
$noRedimensionar = true;
-
}
-
-
-
if($midaHoritzontal) {
-
$ratio = ($mides[0]/$midaHoritzontal);
-
} else {
-
$ratio = ($mides[1]/$midaVertical);
-
}
-
-
$thumb = imagecreatetruecolor($midaHoritzontal,$midaVertical);
-
-
switch($extensio) {
-
case 'image/pjpeg':
-
case 'image/jpeg':
-
imagecopyresampled($thumb,$original,0,0,0,0,$midaHoritzontal,$midaVertical,$mides[0],$mides[1]);
-
imagejpeg($thumb,'../tempImage');
-
break;
-
-
case 'image/gif':
-
case 'image/png':
-
$colorTransparancia=imagecolortransparent($original);// devuelve el color usado como transparencia o -1 si no tiene transparencias
-
if($colorTransparancia!=-1){ //TIENE TRANSPARENCIA
-
//unset($thumb);
-
//$thumb = imagecreatetruecolor($midaHoritzontal,$midaVertical);
-
-
$colorTransparente = imagecolorsforindex($original, $colorTransparancia); //devuelve un array con las componentes de lso colores RGB + alpha
-
$idColorTransparente = imagecolorallocatealpha($thumb, $colorTransparente['red'], $colorTransparente['green'], $colorTransparente['blue'], $colorTransparente['alpha']); // Asigna un color en una imagen retorna identificador de color o FALSO o -1 apartir de la version 5.1.3
-
-
imagefill($thumb, 0, 0, $idColorTransparente);// rellena de color desde una cordenada, en este caso todo rellenado del color que se definira como transparente
-
imagecolortransparent($thumb, $idColorTransparente); //Ahora definimos que en el nueva imagen el color transparente será el que hemos pintado el fondo.
-
imagecopyresampled($thumb,$original,0,0,0,0,$midaHoritzontal,$midaVertical,$mides[0],$mides[1]);// copia y redimensiona un trozo de imagen
-
//imagecopyresized
-
}
-
-
switch ($extensio){
-
case 'image/gif':
-
imagegif($thumb,'../tempImage');
-
break;
-
case 'image/png':
-
imagepng($thumb,'../tempImage');
-
break;
-
}
-
-
default:
-
imagecopyresampled($thumb,$original,0,0,0,0,$midaHoritzontal,$midaVertical,$mides[0],$mides[1]);
-
imagejpeg($thumb,'../tempImage');
-
-
break;
-
}
-
-
//Lliurem la memòria
-
-
}
-
-
//eliminació de la imatge del servidor
-
-
}
-
-
return $imatge;
-
-
}
En este escript no se tienen en cuenta la redimension de imagenes gif animadas.







