Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Redimensionar imagen con php

Estas en el tema de Redimensionar imagen con php en el foro de PHP en Foros del Web. Hola de nuevo foro: Estoy atascado intentando redimensionar una imagen mediante php pero no consigo que funcione. El archivo lo he llamado resize.php y el ...
  #1 (permalink)  
Antiguo 11/02/2014, 14:37
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Redimensionar imagen con php

Hola de nuevo foro:

Estoy atascado intentando redimensionar una imagen mediante php pero no consigo que funcione. El archivo lo he llamado resize.php y el código que contiene es el siguiente:

Código PHP:
 <?php 
$anchura
=80
$hmax=80
$nombre=basename($_GET['imagen']); 
$datos getimagesize($nombre); 
if(
$datos[2]==1){$img = @imagecreatefromgif($nombre);} 
if(
$datos[2]==2){$img = @imagecreatefromjpeg($nombre);} 
if(
$datos[2]==3){$img = @imagecreatefrompng($nombre);} 
$ratio = ($datos[0] / $anchura); 
$altura = ($datos[1] / $ratio); 
if(
$altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;} 
$thumb imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb$img0000$anchura$altura$datos[0], $datos[1]); 
if(
$datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);} 
if(
$datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);} 
if(
$datos[2]==3){header("Content-type: image/png");imagepng($thumb); } 
imagedestroy($thumb); 
?>
cuando ejecuto el archivo resize.php?imagen=test.jpg obtengo el siguiente mensaje de error en el navegador:

No se puede mostrar la imagen "http:127.0.0.1/resize.php?imagen=test.jpg" porque contiene errores

A ver si a alguien se le ocurre que puede estar pasando

Gracias anticipadas
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #2 (permalink)  
Antiguo 11/02/2014, 14:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Redimensionar imagen con php

Quita los header() y observa los errores.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/02/2014, 15:15
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Cita:
Iniciado por pateketrueke Ver Mensaje
Quita los header() y observa los errores.
Ya lo había probado antes y se queda la pantalla del navegador en blanco sin ninguna clase de errores
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #4 (permalink)  
Antiguo 11/02/2014, 15:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Redimensionar imagen con php

Ese es el asunto, si funcionara el script al menos deberías ver la información binaria de la imagen (muchos caracteres basura), pero si no muestra nada entonces todo está mal.

¿Qué será?

Pues no lo sé, te toca depurar tu script para ver que anda mal.

Lo digo porque es imposible ejecutar tu código mentalmente para averiguar algo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/02/2014, 15:27
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Si quito las tres lineas completas

Código PHP:
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);} 
if(
$datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);} 
if(
$datos[2]==3){header("Content-type: image/png");imagepng($thumb); } 
y las cambio por

Código PHP:
imagejpeg($thumb); 
entonces si veo media pantalla llena de caracteres extraños, no se si es eso lo que me querias decir
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #6 (permalink)  
Antiguo 11/02/2014, 15:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Redimensionar imagen con php

Exactamente.

La única forma de saber que parte de script está fallando es ir depurando linea a linea.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 11/02/2014, 16:52
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Eso de depurar ya me viene grande.

Me vendría bien si alguien tubiera un script ya hecho que funcione.

La idea es redimensionar las imagenes llamando al archivo resize de esta manera

Código HTML:
<img src="resize.php?imagen=../img/imagen_original.jpg"> 
He buscado mucho pero no encuentro nada que funcione, por lo menos a mi.
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #8 (permalink)  
Antiguo 12/02/2014, 15:24
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Como no consigo saber que falla en el scrip anterior he buscado en la web y he encontrado este que si funciona por si a alguien le interesa, pero aún me queda algo.

Para mostrar la imagen redimensionada quisiera usar algo como esto

Código HTML:
<img src="resize.php?w=140&h=140&i=imagen_original.jpg"> 
pero no se que me faltaría añadir al scrip para que funcione

Código PHP:
$w $_GET['w'];
$h $_GET['h'];
$imagen $_GET['i'];
 
$im null;
 
if(
stripos($imagen".gif")) $im imagecreatefromgif($imagen);
if(
stripos($imagen".jpg")) $im imagecreatefromjpeg($imagen);
if(
stripos($imagen".png")) $im imagecreatefrompng($imagen);
 
list(
$wi,$hi) = getimagesize($imagen);
$w_scale $w/$wi;
$h_scale $h/$hi;
 
if(
$w_scale<$h_scale){
    
$w $wi*$w_scale;
    
$h $hi*$w_scale;
}else{
    
$w $wi*$h_scale;
    
$h $hi*$h_scale;
}
 
$thumb imagecreatetruecolor($w,$h);
 
imagecopyresampled ($thumb$im0000$w$h$wi$hi);
header("Content-type: image/jpg");

imagejpeg($thumb);
imagedestroy($thumb); 
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #9 (permalink)  
Antiguo 13/02/2014, 14:00
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Redimensionar imagen con php

Una pregunta tonta.
Recibes los datos de la imagen por GET o por POST, la imagen esta en el server o la envias mediante un form?
  #10 (permalink)  
Antiguo 13/02/2014, 14:42
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Cita:
Iniciado por xerifandtomas Ver Mensaje
Una pregunta tonta.
Recibes los datos de la imagen por GET o por POST, la imagen esta en el server o la envias mediante un form?
La imagen esta en el servidor.
Hasta la fecha trato las imagenes de una en una hasta tres veces, una para el thumb (80x80px), otra para la vista normal (350x350px) y una tercera para el zoom (600x600 o más).
Este es el trabajo que quiero evitarme con el scrtip, subir al servidor una sóla imagen y que el servidor me la de redimensionada. A parte de ahorrar espacio al no triplicar cada foto.

No se si he respondido a tu pregunta
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #11 (permalink)  
Antiguo 13/02/2014, 15:18
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Redimensionar imagen con php

Tu fallo es que no estas pasando la ruta del archivo correctamente.
no se por que utulizas basename(), comprueba que antes de <?php no tienes ningun espacio ni caracter ni nada.

Prueba así

Código PHP:
Ver original
  1. <?php
  2. $ruta='../rutaimagen.jpg';
  3. $anchura=80;
  4. $hmax=80;
  5. $datos = getimagesize($ruta);
  6. if($datos[2]==1){$img = @imagecreatefromgif($ruta);}
  7. if($datos[2]==2){$img = @imagecreatefromjpeg($ruta);}
  8. if($datos[2]==3){$img = @imagecreatefrompng($ruta);}
  9. $ratio = ($datos[0] / $anchura);
  10. $altura = ($datos[1] / $ratio);
  11. if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
  12. $thumb = imagecreatetruecolor($anchura,$altura);
  13. imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
  14. if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
  15. if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
  16. if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
  17. imagedestroy($thumb);
  18. ?>
  #12 (permalink)  
Antiguo 13/02/2014, 15:29
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Redimensionar imagen con php

Porcierto basename() , que no lo conocia, devuelve el nombre del archivo o directorio, del final de la ruta.

por ejemplo
Código PHP:
Ver original
  1. basename('./img/300px/'); //devuelve 300px
  2. basename('./img/300px/imagen.jpg') //devuelve imagen.jpg

En fin solo devuelve el el ultimo nombre de la ruta, no la ruta completa.
  #13 (permalink)  
Antiguo 13/02/2014, 15:40
Avatar de rodrigus71  
Fecha de Ingreso: mayo-2012
Ubicación: Alicante
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Redimensionar imagen con php

Mil gracias xerifandtomas, ahora si que me funciona.
Es que no hay nada como preguntar al que sabe.
Un saludo
__________________
Dame hueco, que habiendo hueco yo ya...
https://www.ofidecoeducativos.es/
  #14 (permalink)  
Antiguo 13/02/2014, 15:51
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Redimensionar imagen con php

Cita:
Iniciado por rodrigus71 Ver Mensaje
Mil gracias xerifandtomas, ahora si que me funciona.
Es que no hay nada como preguntar al que sabe.
Un saludo
Un clic en: me gusto, gracias. tampoco esta de mas.

Ma alegro de que te funcionara.

Etiquetas: imagenenes, redimensionar
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 06:09.