Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/10/2007, 20:26
franco190453
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 11 meses
Puntos: 33
Re: redimensionar imagenes al subirlas

Nox:
Este codigo que te incluyo a continuacion, lo utilizo para reducir
las imagenes a los niveles maximos de ancho y alto que yo especifique.
Aqui partes del nombre de una imagen que ya la subistes al servidor
y debes indicar donde esta!.
<?php
$nombre = "jpeg530kb2048x1536.jpg";
$imagen = imagecreatefromjpeg( "$nombre" );
$anchomaximo = 156; // ancho maximo requerido
$altomaximo = 156; // alto maximo requerido
$anchoreal = imagesx( $imagen );
$altoreal = imagesy( $imagen );
if( $anchoreal > $anchomaximo || $altoreal > $altomaximo ) {
if( $anchoreal > $altoreal ) {
$nuevoancho = $anchomaximo; //nuevo ancho = 156
$nuevoalto = $nuevoancho * $altoreal / $anchoreal;
} else {
$nuevoalto = $altomaximo; //nuevo ancho = 156
$nuevoancho = $nuevoalto * $anchoreal / $altoreal;
}
} else {
// aqui podemos hacer un gif animado tambien
$nuevoancho = $anchoreal;
$nuevoalto = $altoreal;
}
$nuevaimagen = imagecreatetruecolor( $nuevoancho, $nuevoalto );
//Si la imagen tiene color transparente, le sacamos los colores RGB y
//los usamos para rellenar la imagen resultante en el fondo
//para evitar trastornos en la imagen final
$colororiginal = imagecolortransparent( $imagen ); // -1 para imagenes opacas
if($colororiginal >= 0 && $colororiginal < imagecolorstotal( $imagen )) {
//para GIF animados, imagecolortransparent nos dara un index de colores
//mayor que el nos da imagecolorstotal; en este caso tratamos la imagen
//como opaca. Verdaderamente es opaca.
$colortransparente = imagecolorsforindex( $imagen, $colororiginal );
$nuevocolor = imagecolorallocate($nuevaimagen, $colortransparente['red'], $colortransparente['green'], $colortransparente['blue']);
//Para un verdadero color de la imagen
//Debemos llenar el fondo manualmente.
imagefill( $nuevaimagen, 0, 0, $nuevocolor );
//Poner el color transparente en la imagen final.
imagecolortransparent( $nuevaimagen, $nuevocolor );
}
//copiar y modificar tamaño como siempre se hace
imagecopyresized( $nuevaimagen, $imagen, 0, 0, 0, 0, $nuevoancho, $nuevoalto, $anchoreal, $altoreal );
imagejpeg( $nuevaimagen, "$nombre" );
imagedestroy( $imagen );
imagedestroy( $nuevaimagen );
echo "<img src=\"$nombre\">";
?>

Saludos
Y espero te ayude
Franco