Foros del Web » Programando para Internet » PHP »

¿Cómo cambiar el tamaño de un jpg en el servidor?

Estas en el tema de ¿Cómo cambiar el tamaño de un jpg en el servidor? en el foro de PHP en Foros del Web. Buenas, Estoy haciendo una web en la que los usuarios pueden subir fotos automaticamente. Todo funciona de maravilla pero el problema esque si los usuarios ...
  #1 (permalink)  
Antiguo 08/06/2007, 17:58
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
¿Cómo cambiar el tamaño de un jpg en el servidor?

Buenas,

Estoy haciendo una web en la que los usuarios pueden subir fotos automaticamente. Todo funciona de maravilla pero el problema esque si los usuarios suben archivos de un peso mayor a 1 mb será un gran problema para el servidor.

La mayoría de las fotos que suben los usuarios son de esta capacidad y tienen unas dimensiones bastante grandes; ya tengo en mis scripts unas líneas que haran que si la imagen es muy grande se muestre en pantalla con un ancho máximo y un alto relativo al ancho con la función getimagesize y unas cuantas líneas de más.


Pero...
Volviendo a la pregunta, lo que quiero esque cuando el archivo se copie definitivamente al servidor se cambien sus dimensiones y por defecto el peso del archivo.


Mi script, funciona algo así(quitaré algunas líneas personales para no escribir mucho codigo aqui y que se entienda la idea):

-----------------------ARCHIVO QUE CONTIENE EL FORM----------------

<form action="/ACCESO/USERS/listo.php" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Archivo
<input name="archivo" type="file" id="archivo">
</p>
<p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
</form>


------------------ LISTO.PHP-------------------------------

<?php require_once('/user/aebs/procesos/upfotos.php'); ?>
<?php
if($subio) {
echo "El archivo subio con exito";
} else {
echo "El archivo no cumple con las reglas establecidas";
}
die();
?>


----------------------UPFOTOS.PHP-------------------------
<?php
$oldname = $HTTP_POST_FILES['archivo']['name'];
$newname = "test.jpg";
if($boton) {
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
if($HTTP_POST_FILES['archivo']['size'] < 25000000) {
if($HTTP_POST_FILES['archivo']['type']=="image/jpeg"){
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
rename( $oldname , $newname);
$subio = true;
}
}
}

}




-----------------------------------------
Como verán,
esto funciona así:
1.-El formulario envía el archivo a listo.php, y el archivo es copiado a una carpeta temporal del servidor
2.-listo.php requiere a upfotos.php (ver paso 3) si upfotos funciona devolverá un mensaje de exito o error.
3.-Upfotos verifica que el archivo tenga la capacidad y el formato adecuado y de ser así lo copia a una carpeta estable del servidor(de no copiarse el archivo temporal es eliminado al dejar de usar el script)

Lo que tengo pensado mas o menos, es agregar alli un if($HTTP_POST_FILES['archivo']['size'] < 10000000)
{
CODIGO QUE AL HACER copy() mi archivo ///$HTTP_POST_FILES['archivo']['name']\\\\\\\\\ Tiene un peso de aprox. 500 kb (suponiendo que la img original tuviera 50,000 x 50,000 px. ahora tenga 25,000 x 25,000 px.)
}


(= Espero no estar pidiendo imposibles, o algo propio de otra tecnología(no php)

:) Muchas gracias... espero alguien me pueda ayudar.


Por cierto, he leido sobre las funciones imagerize y algunas parecidas pero según entiendo estas solo redimensionan el tamaño visto por el usuario. No el tamaño original del archivo, el cual ahora que recuerdo, les agrego los códigos usados para esta función por si a alguien le sirve:

////IMAGE SIZE
if (!$row_FOTOPRINCIPAL['pid'] == NULL){
$tam = getimagesize("/user/aebs/public_html/medblogs/pics/" . $row_FOTOPRINCIPAL['pid']);

$wtamo = $tam[0];

$htamo = $tam[1];

if ($wtamo > '550')
{$wtam = '550';
$htamx = '550' * $htamo;
$htam = $htamx / $wtamo;
}
else
{
$wtam = $wtamo;
$htam = $htamo;
}
}

/////////////////////////////
<img src="url" width="<?php echo $wtam;?>" height="<?php echo $htam; ?>"/>
  #2 (permalink)  
Antiguo 08/06/2007, 19:51
Avatar de hectorejch  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 172
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: ¿Cómo cambiar el tamaño de un jpg en el servidor?

Fijate un poco esta función, creo que es la que estas buscando......
imagecopyresized
__________________
"El Reino de Dios no consiste en palabras, sino en poder"
  #3 (permalink)  
Antiguo 08/06/2007, 21:07
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Re: ¿Cómo cambiar el tamaño de un jpg en el servidor?

Muchas gracias hectorejch por contestar.

La verdad ya habia estado probando esa función, ahorita hice más pruebas y lo que se me hace más lógico es el resultado que presentaré ahorita, el cual me da un error.

La verdad tampoco termino de entender esta función; ¿selecciona una parte de mi imagen y la pasa a otra parte de imagen que puede ser donde mismo? Pero lo que yo quiero es crear una nueva imagen con otras dimensiones, traté probando la función imagecreate pero tampoco me es útil, esta función crea una imagen con fondo blanco que se peude modificar pero dicha imagen no es un archivo, solo una imagen mostrada en el explorador, que al salir de la pagina desaparece.

Alguien sabe como puedo crear un jpg con x dimensiones? así podría usar el copyresized sobre esa imagen.


En fin...

aqui les dejo el código que he generado y el error que me da mis exploradores:

<?php
$oldname = $HTTP_POST_FILES['archivo']['name'];
$newname = "test.jpg";
$newname2 = "test2.jpg";

if($boton) {
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
if($HTTP_POST_FILES['archivo']['size'] < 25000000) {
if($HTTP_POST_FILES['archivo']['type']=="image/jpeg"){
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
rename( $oldname , $newname);
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
rename( $oldname , $newname2);
$tam = getimagesize(/ACCESO/USERS/test2.jpg");
imagecopyresized("/ACCESO/USERS/test2.jpg", "/ACCESO/USERS/test2.jpg", 0, 0, 0, 0, 50, 50, $tam[0], $tam[1]);
$subio = true;
}
}
}

}


?>
  #4 (permalink)  
Antiguo 08/06/2007, 21:27
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Re: ¿Cómo cambiar el tamaño de un jpg en el servidor?

¿Alguien sabe si la función imagecopy() solamente copia la imagen esa vez o si se guarda permanentemene?
  #5 (permalink)  
Antiguo 09/06/2007, 10:51
Avatar de hectorejch  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 172
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: ¿Cómo cambiar el tamaño de un jpg en el servidor?

Hola aebs90, yo de nuevo :D Estuve averiguando y encontre esto, fijate si te sirve:
Reziseador de imagenes
Redimensionador

Son dos funciones distintas, espero que te sirvan
__________________
"El Reino de Dios no consiste en palabras, sino en poder"
  #6 (permalink)  
Antiguo 09/06/2007, 11:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: ¿Cómo cambiar el tamaño de un jpg en el servidor?

despues de crear la imagen con el tamaño mas chico, borra la imagen original..
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 20:43.