Foros del Web » Programando para Internet » PHP »

redimensionar imagenes al subirlas

Estas en el tema de redimensionar imagenes al subirlas en el foro de PHP en Foros del Web. he buscado en el foro de php y no encuentro un codigo q me de precisamente lo que ando buscando necesito que al subir la ...
  #1 (permalink)  
Antiguo 01/10/2007, 16:57
Avatar de Nox
Nox
 
Fecha de Ingreso: diciembre-2004
Ubicación: Viña del Mar
Mensajes: 72
Antigüedad: 19 años, 4 meses
Puntos: 1
redimensionar imagenes al subirlas

he buscado en el foro de php y no encuentro un codigo q me de precisamente lo que ando buscando

necesito que al subir la imagen inmediatamente se cambie de tamaño (no que se cree un thumbnail) y que en vez de subirse la foto original se suba la imagen redimensionada al destino... si es necesario q se suba la foto original tambien, no seria problema, pero lo importante es q a la carpeta que quiero que esten las fotos, llegue la foto redimensionada :P

dejare el codigo q uso para subir las fotos y el q los sube :D ojala me puedan ayudar

Código PHP:
<form name="formx" action="subirfotos2.php" method="post" enctype="multipart/form-data">
<
b>Titulo de la Foto:</b><br>
<
input type="text" name="titulo" size="20" maxlength="100" class="td"><br><br>
<
input type="hidden" name="MAX_FILE_SIZE" value="2000000000" class="td"><br>
<
b>Foto:</b><br>
<
input name="userfile" type="file">
<
br><br>
<
class="enlace" href="#" onclick="document.forms.formx.submit();return false">
<
div align="center"><img src="recursos/send.gif" border="0"></div>
</
a>
</
form

Código PHP:
$titulo $_POST["titulo"];
$carpeta=''.$mes.'_'.$aar.'';
$path "bilder/$carpeta/";
$autor$_SESSION["numero"];
function 
cuenta_archivos$dir 

     
$retval 0
     if( 
$dir && is_dir$dir ) ) 
     { 
          if( (
$d opendir$dir )) !== false 
          { 
               while( (
$f readdir$d )) !== false 
               { 
                    if( 
is_file$dir "/" $f ) ) ++$retval
               } 
               
closedir$d ); 
          } 
     } 
     return 
$retval

$cantidadcuenta_archivos("$path");
$cantidad2=$cantidad++;

//datos del arhivo
$nombre_archivo $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 2000000000))) {
ERROR
}else{
    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $path.$_FILES['userfile']['name'])){
$mes gmdate("m");
include(
"conexion.php");
//Ejecucion de la sentencia SQL
mysql_db_query("tabla","insert into galeria (numero, foto, titulo, mes, aar, autor) values ('$cantidad2', '$nombre_archivo', '$titulo', '$mes', '$aar', '$numero')");
?> 
__________________
todo es serio y ordenado, todo es racional y programado, precisamente porque todo es falso e ilusorio
  #2 (permalink)  
Antiguo 01/10/2007, 17:54
 
Fecha de Ingreso: octubre-2007
Ubicación: Valencia (españa)
Mensajes: 23
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: redimensionar imagenes al subirlas

Existe una clase en PHP que trabaja muy bien con redimensionamiento y tratamiento de imagenes:
http://www.phpclasses.org/browse/package/2181.html
Biene con algun ejemplo de muestra...

Salu2
  #3 (permalink)  
Antiguo 01/10/2007, 20:26
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:08.