Foros del Web » Programando para Internet » PHP »

reducir tamaño de imagen

Estas en el tema de reducir tamaño de imagen en el foro de PHP en Foros del Web. Que tal? Me pasaron este script... Código PHP: <?php //formamos la ruta de la imagen $upload_dir  =  $_SERVER [ 'DOCUMENT_ROOT' ] .  "/images/" ; $imagen  =  'left.gif' ;  //esto sale de un GET, pero lo coloqué literal $alto  =  ...
  #1 (permalink)  
Antiguo 06/09/2004, 13:00
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
reducir tamaño de imagen

Que tal?
Me pasaron este script...

Código PHP:
<?php
//formamos la ruta de la imagen
$upload_dir $_SERVER['DOCUMENT_ROOT'] . "/images/";

$imagen 'left.gif'//esto sale de un GET, pero lo coloqué literal
$alto 150//idem anterior
$ancho 150//idem anterior


  
$img = @imagecreatefromjpeg($upload_dir.$imagen) or die("No se encuentra la imagen $upload_dir$imagen<br>\n"); 

  
// miramos el tamaño de la imagen original... 
  
$datos getimagesize($upload_dir.$imagen) or die("Problemas con imagen<br>\n"); 
  
  
// esta será la nueva imagen reescalada 
  
$thumb imagecreatetruecolor($ancho,$alto); 

  
// con esta función la reescalamos 
  //imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $ancho, $alto, $datos[0], $datos[1]); 
  
imagecopyresized ($thumb$img0000$ancho$alto$datos[0], $datos[1]); 


  
header("Content-type: image/jpeg");
  
imagejpeg($thumb""85); 

?>

... pero no me funciona dándome el siguiente mensaje de error:

Cita:
Notice: Undefined index: DOCUMENT_ROOT in c:\Inetpub\wwwroot\1muestra_imagen.php on line 3
El script corre sobre IIS y no sé si tengo instaladas las librerías GD ni sé si hará falta tenerlas para que eso funcione (igual el error me lo está marcando en $_SERVER['DOCUMENT_ROOT'])

Alguna ayuda?

Gracias
__________________
...___...
  #2 (permalink)  
Antiguo 06/09/2004, 13:30
Avatar de Edypu  
Fecha de Ingreso: octubre-2003
Ubicación: La Paz - Bolivia
Mensajes: 394
Antigüedad: 20 años, 6 meses
Puntos: 1
tienes que crear la carpeta images
  #3 (permalink)  
Antiguo 06/09/2004, 13:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Que version de PHP tienes instalado? $_SERVER esta solo disponible a partir de la version 4.1. Ademas, los valores lo s asigna el servidor web. ¿Usas Apache o ISS?

Ese valor es la constante donde se almacena el path del directorio raiz del sitio (en tu caso c:\Inetpub\wwwroot\). Puedes usar ese valor directamente, pero tendrias que cambiarlo en cada servidor donde cambie.

Puedes mirar en phpinfo() (www.php.net/phpinfo) a ver si en tu servidor ese valor esta almacenado en otra variable.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 06/09/2004, 13:35
 
Fecha de Ingreso: abril-2002
Mensajes: 8
Antigüedad: 22 años
Puntos: 0
Si estas funcionando baso IIS, tienes que cambiar $_SERVER['DOCUMENT_ROOT'] . "/ por C:/directorio/nosedondeesta/img

Ya que $_SERVER['DOCUMENT_ROOT'], es variable reservada de apache.

Te recomiendo que fabriques un archivo:

<?php
//info.php

echo infophp();

?>
  #5 (permalink)  
Antiguo 06/09/2004, 14:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Cita:
Iniciado por Edypu
tienes que crear la carpeta images
Por supuesto que la carpeta images ya estaba creada y el archivo left.gif se econtraba allí (que por cierto, lo cambié a un JPG por la siguiente línea y tampoco funcionó: header("Content-type: image/jpeg");)


Cita:
Iniciado por josemi
¿Que version de PHP tienes instalado? $_SERVER esta solo disponible a partir de la version 4.1. Ademas, los valores lo s asigna el servidor web. ¿Usas Apache o ISS?

PHP Version 5.0.1 sobre IIS

Cita:
Iniciado por josemi
Ese valor es la constante donde se almacena el path del directorio raiz del sitio (en tu caso c:\Inetpub\wwwroot\). Puedes usar ese valor directamente, pero tendrias que cambiarlo en cada servidor donde cambie. Puedes mirar en phpinfo() (www.php.net/phpinfo) a ver si en tu servidor ese valor esta almacenado en otra variable.
Revisando el resultado de phpinfo(); las únicas que hacen referencia a c:\inetpub\wwwroot\ son:

Cita:
- ORIG_PATH_TRANSLATED: c:\inetpub\wwwroot\phpinfo.php
- SCRIPT_FILENAME: c:\inetpub\wwwroot\phpinfo.php
- _SERVER["ORIG_PATH_TRANSLATED"]: c:\inetpub\wwwroot\phpinfo.php
- _SERVER["SCRIPT_FILENAME"]: c:\inetpub\wwwroot\phpinfo.php
- _ENV["ORIG_PATH_TRANSLATED"]: c:\inetpub\wwwroot\phpinfo.php
- _ENV["SCRIPT_FILENAME"]: c:\inetpub\wwwroot\phpinfo.php
Pero como se ve, todas vienen con el nombre del archivo en el path.


Cita:
Iniciado por rubenije
Si estas funcionando baso IIS, tienes que cambiar $_SERVER['DOCUMENT_ROOT'] . "/ por C:/directorio/nosedondeesta/img

Ya que $_SERVER['DOCUMENT_ROOT'], es variable reservada de apache.
Bien, cambié el $_SERVER['DOCUMENT_ROOT'] por su valor literal (c:\inetpub\wwwroot\) quedando así el script:


Código PHP:
<?php
//formamos la ruta de la imagen
$upload_dir "c:/Inetpub/wwwroot/images/";

$imagen 'bg_ventanas_editor.jpg';
$alto 150;
$ancho 150;


  
$img = @imagecreatefromjpeg($upload_dir.$imagen) or die("No se encuentra la imagen $upload_dir$imagen<br>\n"); 

  
// miramos el tamaño de la imagen original... 
  
$datos getimagesize($upload_dir.$imagen) or die("Problemas con imagen<br>\n"); 
  
  
// esta será la nueva imagen reescalada 
  
$thumb imagecreatetruecolor($ancho,$alto); 

  
// con esta función la reescalamos 
  //imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $ancho, $alto, $datos[0], $datos[1]); 
  
imagecopyresized ($thumb$img0000$ancho$alto$datos[0], $datos[1]); 


  
header("Content-type: image/jpeg");
  
imagejpeg($thumb""85); 
?>

... pero ahora no hace nada de nada. No da error, pero no muestra ninguna imagen. Sólo una página totalmente en blanco
Hay alguna otra cosa que esté mal en el código o algún componente de tratamiento de imágenes que necesite configurar?
__________________
...___...
  #6 (permalink)  
Antiguo 06/09/2004, 16:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podrias quitarle el @ a la función image.....() lo cual hace "ocultar" los mensajes de error.

Y también comenta (usa // delante) de header() .. así veras claramente el error que puedas tener.

Por ejemplo verias un error tipo "funcion tal no existe" .. Eso sería indicativo de que no tienes instalado las librerias GD bajo tu PHP 5.x.

Compruebalo haciendo un phpinfo() como ya te han mencionado, debes ver un bloque de inforamción al respecto (incluido información sobre la versión de GD que uses).

Un saludo,
  #7 (permalink)  
Antiguo 06/09/2004, 17:11
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Hola, estuve viendo el problema por privado con Joseph_Fley (sorry si el nick está mal escriito) y efectivamente no tenía onfigurada la librería GD.

Modifiqué el path que hace referencia al directorio de las extensiones (le coloqué "c:\PHP\extensions\") y dentro de esa carpeta coloqué el archivo... php_g2.dll... , descomenté la línea que hace referencia a esa extención y nada.. me dice que no la encuentra.

Pero todo eso en otra PC, en esta si tengo tiempo voy a hacer lo mismo y les comento (o sigo mañana en la otra PC)

Gracias por la ayuda prestada hasta el momento (seguro que mañana sigo rompiendo las pelotas =)
__________________
...___...
  #8 (permalink)  
Antiguo 07/09/2004, 12:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Y como adelanté, aquí estoy nuevamente rompiendo las pelotas ;)

El archivo php.ini quedó de ésta manera:

Cita:
; Directory in which the loadable extensions (modules) reside.
extension_dir = "c:\PHP\extensions"

Cita:
;Windows Extensions
;Note that ODBC support is built in, so no dll is needed for it.
;...
extension=php_gd2.dll
;...
El archivo php_gd2.dll lo coloqué en C:\PHP\extensions\php_gd2.dll

Y nada. cualuier archivo PHP que intente correr me dice:

Cita:
1PHP Warning: PHP Startup: Unable to load dynamic library 'c:\PHP\extensions\php_gd2.dll' - No se puede encontrar el módulo especificado. in Unknown on line 0

¿Me quedo algo por configurar en el archivo php.ini?

Gracias
__________________
...___...
  #9 (permalink)  
Antiguo 07/09/2004, 13:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Esa librería php_gd2.dll .. de donde la sacastes?

Corresponde a la versión exacta de PHP que usas?

Si mal no recuerdo usas PHP en modo CGI bajo IIS, si es así .. la instalación que usastes (tal vez el "Installer": www.php.net/download) no contiene esas extensiones que si que vienen con la versión "completa" de PHP: "Zip package"). Lo importante es que uses las php_xxx.dll de la versión de PHP que uses (sobre todo para las GD que vienen con parte "pre-compilada" en el núcleo de PHP).

Un saludo,
  #10 (permalink)  
Antiguo 07/09/2004, 14:48
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
La librería me la pasaron por mail. No sé a que versión corresponde, así que ya me bajé el zip, voy a reemplazarla y te comento
__________________
...___...
  #11 (permalink)  
Antiguo 07/09/2004, 14:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Perfecto!

Mil gracias, configuración solucionada y script funcionando de maravillas

Gracias a todos
__________________
...___...
  #12 (permalink)  
Antiguo 07/09/2004, 15:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, dazuaga .. ah y bienvenido al mundo "PHP" (aunque sea de visita xD).

Un saludo,
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 13:38.