Foros del Web » Programando para Internet » PHP »

Duda con PHP 5 y GD?

Estas en el tema de Duda con PHP 5 y GD? en el foro de PHP en Foros del Web. Hola tengo instalado el PHP 5 RC2 en mi PC y todo me está funcionando de maravilla. La cosa es que estoy desarrollando una función ...
  #1 (permalink)  
Antiguo 19/05/2004, 23:11
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Duda con PHP 5 y GD?

Hola tengo instalado el PHP 5 RC2 en mi PC y todo me está funcionando de maravilla. La cosa es que estoy desarrollando una función para generar thumbnails de imagenes que están guardadadas en un directorio y cuyo nombre se haya guardado en la BD. El código es este:
Código PHP:
function CreateThumbnail($filename){
  
$img imagecreatefromjpeg($filename);
  
$width imagesx($img);
  
$height imagesy($img);

  if(((
$width==1024) || ($width==800) || ($width==640))&&(($height==768)||($height==600)||($height==480))){
   
$new_width 144;
   
$new_height 108;
  }

  
$new_img imagecopyresized($thumbnail$img0,0,0,0$new_width$new_height$width$height);

  
header("Content-type: image/jpeg");
  
imagejpeg($new_img);
 } 
y lo llamo de esta forma:
CreateThumbnail("images/wallpapers/Abstract_094.jpg");

pero me pone estos errores:
Cita:
Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\wamp\www\reynierpm\functions.inc.php on line 437

Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\wamp\www\reynierpm\functions.inc.php on line 440
ya he comprobado la directiva de mi php.ini y la librería GD2 está activada y funcionando correctamente.
¿Qué es lo que hago mal?

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 20/05/2004, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y de donde te sale "$thumbnail".?

Estás usando una función .. en dicha función no se vé dicha variable declarada (ni como global) ni se vé que la pases como parámetro .. ademas que ese $thumbnail implicaría algo tipo:

$thumbnail = imagecreate(20, 20);
y luego:
imagejpeg($thumbnail);

(no se hace: $new_img = imagecopyresized() ... es decir, no es necesario asignarlo a una variable y esa no es la que se usaría en imagexxx() que uses posteriormente.)

Las funciones en general de las "GD" trabajan son "resource imagen" .. (no sé como se traducirá en castellano) .. pero, no se trata de "asignar" variables a la mayoría de funciones sino en "declarar" la "fuente" de la imagen y usarla en el parámetro que requiera cada función.

Tienes más ejemplos completos en:
http://www.php.net/manual/en/functio...opyresized.php
(fijate en los comentarios de los usuarios).

Un saludo,

PD: Consejo .. No es necesario que andes reinventando la rueda para ese tipo de funciones básicas como la de crear "thumbnails". Tan sólo tienes que usarlas y sobre todo comprender como funciona el tema en general (yo lo hago así: intento entender como va la cosa y luego busco algo que se adapte a mis necesidades, si algo que uso no es completamente lo que busco .. lo adapto: pero con la base de que entiendo como funciona y si no ha nada .. pues de hace desde cero (me refiero a funciones básicas))
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 20/05/2004 a las 07:23
  #3 (permalink)  
Antiguo 20/05/2004, 07:27
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues de eso me di cuenta

De eso me di cuenta ayer registrando en mis documentos y buscando información al respecto en internet. Ahora he modificado el código y me ha quedado así:
Código PHP:
function CreateThumbnail($filename){
  
$img imagecreatefromjpeg($filename);
  
$width imagesx($img);
  
$height imagesy($img);

  
$imagen imagecreate($width$height);

  if(((
$width==1024) || ($width==800) || ($width==640))&&(($height==768)||($height==600)||($height==480))){
   
$new_width 144;
   
$new_height 108;
  }

  
$new_img imagecopyresized($imagen$img0,0,0,0$width$height$new_width$new_height); #esta es la linea 467

  
header("Content-type: image/jpeg");
  
imagejpeg($new_img); #esta es la linea 470
 

pero me sigue dando esos dos errores:
Cita:
Warning: imagecopyresized() [function.imagecopyresized]: Invalid image dimensions in c:\wamp\www\reynierpm\functions.inc.php on line 467

Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\wamp\www\reynierpm\functions.inc.php on line 470
ahora la funcion la llamo de esta forma:
Cita:
CreateThumbnail("images/wallpapers/Abstract_094.jpg");
y esa imagen existe pues ya he revisado eso.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 20/05/2004, 07:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Te falta inicializar $new_width y $new_height. Tal como lo tienes solo se inicializan si se cumple la condicion. Si no se cumple, las variables no existen y devuelven NULL, que es " Invalid image dimensions".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 20/05/2004, 07:40
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues mira josemi

josemi he corrido el código linea a linea con mi debugger (NuSphere PHPEd) y me he topado con este error que no se que pueda ser:
Cita:
Error: E_ERROR
Call to undefined function: imagecreatefromjpeg() at functions.inc.php line 458
¿es que esa función no viene con las librerías GD de PHP5 o que es lo que pasa?. Eso lo hice para ver si entraba a las condiciones que se requieren para inicializarse las variables.

Salu2

PD: Lo he corrido en el navegador y me da este error:
Cita:
Los tamaños de la imagen original son incorrectos.
Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\wamp\www\reynierpm\functions.inc.php on line 476
y entonces en el editor me da este otro:
Cita:
Fatal error: Call to undefined function: imagecreatefromjpeg() in C:\wamp\www\reynierpm\functions.inc.php on line 459
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 20/05/2004 a las 07:57
  #6 (permalink)  
Antiguo 20/05/2004, 08:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues ahí tendrás que ver que compiló PHP 5 para las GD. Prueba ese código en PHP 4.x y así sale de dudas.

Recuerda que PHP 5 todavía está en fase "beta" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 20/05/2004, 08:22
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
OK

Probaré y luego te digo
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 20/05/2004, 20:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues nada

Cluster ya he resuelto el problema de la librería gráfica, esta es la parte del php.ini donde se pone lo de la directiva:
Cita:
GD Support enabled
GD Version bundled (2.0.22 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
ahora el código sigue siendo el mismo:
Código PHP:
function CreateThumbnail($filename){

  
$img ImageCreateFromJpeg($filename);

  
$width imagesx($img);
  
$height imagesy($img);

  
$imagen imagecreate($width$height);

  if(((
$width==1024) || ($width==800) || ($width==640))&&(($height==768)||($height==600)||($height==480))){
   
$new_width 144;
   
$new_height 108;
  }else{
   echo 
"Los tamaños de la imagen original son incorrectos.";
   
$new_width $width;
   
$new_height $height;
  }

  
$new_img imagecopyresized($imagen$img0,0,0,0$width$height$new_width$new_height);

  
header("Content-type: image/jpeg");
  
imagejpeg($new_img);
 } 
y lo llamo de esta forma:
Cita:
CreateThumbnail("01.jpg");
pero ahora me da este error:
Cita:
Los tamaños de la imagen original son incorrectos.
que puede ser ahora??
Salu2
__________________
Ing. Reynier Pérez Mira
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 00:42.