Foros del Web » Programando para Internet » PHP »

Cambiar anchura de una imagen subida

Estas en el tema de Cambiar anchura de una imagen subida en el foro de PHP en Foros del Web. Hola, foreros!: Llevo tiempo probando varias funciones para cambiar la anchura de la imagen que estoy subiendo a mi servidor. El problema es, jeje, que ...
  #1 (permalink)  
Antiguo 11/12/2008, 13:41
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 16 años, 11 meses
Puntos: 19
Cambiar anchura de una imagen subida

Hola, foreros!:

Llevo tiempo probando varias funciones para cambiar la anchura de la imagen que estoy subiendo a mi servidor. El problema es, jeje, que no me sale nada bien, jeje. Realmente tengo un caos mental sobre si se esta cambiando la dimension en el archivo o en lo que voy a visualizar... es decir... que no funciona como quiero.

Lo que busco es que si mide mas de 100px de ancho cambie su anchura por 100px y su altura la escale adecuadamente para que no se deforme la imagen, jeje. Pero que lo haga yo solo es mision imposible, me salen errores hasta debajo de las ventanas... jeje. Mirar... tengo este codigo... que funciona perfectamente... solo tengo que añadir el cambio de anchura y altura ... pero no se como:

Código PHP:
if (is_uploaded_file($_FILES['archivo']['tmp_name'])) 
    {
        
$ancho_max 100
        
$nombre $HTTP_POST_FILES['archivo']['tmp_name']; 
        
$datos getimagesize($nombre); 
        
$ancho $datos[0]; 
        
$alto $datos[1]; 
        if(
$ancho $ancho_max)
            { 
                
//ahora me gustaria que se editase el ancho y el alto de la imagen y se guardase en el servidor.
            
}
        else
            {    
                
copy($_FILES['archivo']['tmp_name'], "view/".$_FILES['form_input_file_1']['name']);
            }                                            
    } 
¿Me ayudais please?
  #2 (permalink)  
Antiguo 11/12/2008, 13:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cambiar anchura de una imagen subida

Hola salbatore,

Busca en el foro hay varios scripts para redimensionar imagenes. Te adelanto que debes de usar la libreria GD.

Saludos.
  #3 (permalink)  
Antiguo 11/12/2008, 15:15
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 16 años, 11 meses
Puntos: 19
Respuesta: Cambiar anchura de una imagen subida

Hola GatorV,

He estado mirando muchos script's... y no los entiendo, jeje. Creo que lo primero es aprender a cambiar la anchura de una imagen que se esta subiendo al servidor.

Estoy intentando cambiar la anchura y la altura de la imagen que subo con el formulario con este codigo, pero no funciona, ni sube ni edita las medidas:

Código PHP:
$nombre $HTTP_POST_FILES['form_input_file_1']['tmp_name']; 
    
//los datos de la imagen que se sube: ancho y alto
        
$datos getimagesize($nombre);                                                     
        
$ancho $datos[0]; 
        
$alto $datos[1]; 
    
//subir al servidor:
        
copy($_FILES['form_input_file_1']['tmp_name'], $_FILES['form_input_file_1']['name']);
    
//cambio de anchura y altura por 100px:          <---------No va.
        
$imagen_nueva imagecreatetruecolor(100100);
        
$imagen_vieja imagecreatefromjpeg($nombre);
        
imagecopyresampled($imagen_nueva$imagen_vieja0000100100$ancho$alto); 

¿Que hago mal?
  #4 (permalink)  
Antiguo 11/12/2008, 15:36
 
Fecha de Ingreso: diciembre-2008
Ubicación: Mexicali, Mexico
Mensajes: 14
Antigüedad: 15 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Cambiar anchura de una imagen subida

Hola Salbatore.. yo tengo un metodo por ahi pero funciona solo para jpg, pero talvez cambiandole algo funcione con otras extensiones quedaria asii.. Para este ejemplo el ancho es 250 y la altura 200

Código PHP:
if (is_uploaded_file($_FILES['archivo']['tmp_name'])) 
    {
        
$ancho_max 100
        
$nombre $HTTP_POST_FILES['archivo']['tmp_name']; 
        
$datos getimagesize($nombre); 
        
$ancho $datos[0]; 
        
$alto $datos[1]; 
        if(
$ancho $ancho_max)
            { 
                 
// Step 1: djpeg decompresses jpeg to pnm 
                 
system("djpeg $nombre >$tmpimg");
                 
// Steps 2&3: scale image using pnmscale and then pipe into cjpeg to output jpeg file 
                 
system("pnmscale -xy 250 200 $tmpimg | cjpeg -smoo 10 -qual 50 >$nombre");
                 
// remove temp image 
                 
unlink($tmpimg);
            }
        else
            {    
                
copy($_FILES['archivo']['tmp_name'], "view/".$_FILES['form_input_file_1']['name']);
            }                                            
    } 
Espero te sirva.. aunnke sinceramente la calidad de la imagen editada si deja mucho que desear.

Aqui te paso el link con el ejemplo completo.. http://blazonry.com/scripting/upload-size.php

Saludos

Última edición por edwinzin; 11/12/2008 a las 15:38 Razón: incompleto
  #5 (permalink)  
Antiguo 11/12/2008, 16:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cambiar anchura de una imagen subida

Pues obviamente no te va a funcionar por 2 cosas:

1.- Primero copias el archivo a tu carpeta
2.- Nunca llamas a imagejpeg al final para guardar la imagen resultante.

Por eso mi observacion de que veas un script que ya funciona primeramente y aprendas a hacerlo.

Saludos.
  #6 (permalink)  
Antiguo 12/12/2008, 08:33
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 16 años, 11 meses
Puntos: 19
Respuesta: Cambiar anchura de una imagen subida

Hola GatorV,

Siento volver a preguntar... jeje... pero llevo bastante tiempo intentandolo y nada... no me funciona. Probe el codigo de edwinzin, pero me daba algunos errores. Ya he conseguido cambiar la altura y la anchura por 100px... pero no consigo que la guarde con esas medidas en mi servidor :

Mira el codigo:

Código PHP:
header("Content-type: image/jpeg");
$filename $_FILES['form_input_file_1']['tmp_name'];
list(
$width$height) = getimagesize($filename);
                                                            
$thumb imagecreate(100100);
$source imagecreatefromjpeg($filename);
    
// Primero redimensiono por 100px x 100px:
        
imagecopyresized($thumb$source0000100100$width$height);
    
// Ahora me hace una previsualizacion de la imagen editada:
        
imagejpeg($thumb);
    
//Hasta aqui fantasticamente!.
    //Y por ultimo quiero guardar la imagen en el servidor con las medidas editadas (pero guarda la imagen sin editar):
        
copy($_FILES['form_input_file_1']['tmp_name'], "view/".$_FILES['form_input_file_1']['name']); 
¿Que debo hacer?... es que por mucho que miro... no encuentro el paso entre editar y guardar...
  #7 (permalink)  
Antiguo 12/12/2008, 08:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 21 años, 11 meses
Puntos: 1284
Respuesta: Cambiar anchura de una imagen subida

Hola:

Todos los imageXXX tienen un segundo parámetro que es la url para guardar esa imagen... en vez de usar esa calecera, puedes crear un php normal y crear la imagen con su url, y ese php poner un tag img con ese mismo url... no sé si me he explicado...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 12/12/2008, 08:55
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 16 años, 11 meses
Puntos: 19
Respuesta: Cambiar anchura de una imagen subida

Hola, caricatos...

No se si te entendi bien... pero hacer que una imagen tenga su SRC con la ruta a un php para que me cree la miniatura ya lo he conseguido, jeje... El problema lo tengo en que lo que quiero es que cuando cree esa miniatura la guarde en mi servidor. Es decir, en el codigo anterior que falta para que me guarde la imagen editada en el servidor?, que debo editar de esta linea:

Código PHP:
copy($_FILES['form_input_file_1']['tmp_name'], "view/".$_FILES['form_input_file_1']['name']); 
Para que no me introduzca la imagen que he subido con el formulario sino la imagen que he subido con el formulario EDITADA.

Siento ser tan cansino... pero llevo varios dias en ello... y ya me estoy volviendo tarumba... jeje.

PD para caricatos: estuve mirando el ejemplo de previsualizar imagenes tan bonito que tienes... y ya me ves... intentando algo parecido... aunque ya veo que la libreria gd no es mi fuerte...
  #9 (permalink)  
Antiguo 12/12/2008, 09:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cambiar anchura de una imagen subida

Hola salbatore,

Caricatos tiene razón en lugar de usar copy() tienes que pasarle el segundo parámetro a imagejpeg(), si ve el Manual de PHP, es la ruta hacia el archivo en el que se va a escribir la salida.

Saludos.
  #10 (permalink)  
Antiguo 12/12/2008, 09:46
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 16 años, 11 meses
Puntos: 19
Respuesta: Cambiar anchura de una imagen subida

Hola!!!!

Por fin!... que alegre estoy, jeje. Acabo de cambiar eso y funciona fantasticamente, jeje. No me puedo creer que lleve dos dias toqueteando y no lo haya visto antes... jeje. Menos mal que os tengo, jeje.

Sin duda, estas son las cosas que me dan la razon de ... soy un novato.

Bueno... besitos y abrazitos a todos por ayudarme!... jeje.
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 05:19.