Foros del Web » Programando para Internet » PHP »

Duda con código PHP

Estas en el tema de Duda con código PHP en el foro de PHP en Foros del Web. Buenos dias a todos, este es mi primer mensaje en este foro y queria saber si me podian ayudar con una duda que tengo. Estoy ...
  #1 (permalink)  
Antiguo 25/09/2009, 03:09
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Duda con código PHP

Buenos dias a todos, este es mi primer mensaje en este foro y queria saber si me podian ayudar con una duda que tengo.

Estoy intentando aprender PHP y para ello intento solucionar unos problemas que tengo con una web que me hicieron y me da problemas.

He estado buscando informacion antes de escribir pero no he sido capaz de encontrar la respuesta....

He subido unas fotos a mi web y al ir a verlas me salta el siguiente error:
Fatal error: Call to undefined function imagecreatefrom()

He preguntado a mi proveedor si tenian instalada la extension GD y me contesta que si pero que esa funcion no existe. Es algo extraño porque antes funcionaba y no he modificado el codigo. El codigo seria el siguiente, por si me pueden ayudar.
EL error me salta en esta linea. Gracias de antemano por la ayuda...


$imageCreateFuntion = 'imagecreatefrom'.$tipoImagen;
if (!$img = $imageCreateFuntion($pathImagen))
return(false); //or die("No se encuentra la imagen $camino$nombre<br>\n");
  #2 (permalink)  
Antiguo 25/09/2009, 04:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Duda con código PHP

El problema esta en la variable $tipoImagen que aparentemente queda 'nula'.
Si nos mostras donde se setea esa variable, quiza podamos ayudarte mejor.
  #3 (permalink)  
Antiguo 25/09/2009, 04:23
Avatar de urbanchile  
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Duda con código PHP

Estoy perdido en tu codigo, quiero ayudarte, pero no entiendo,

Código PHP:
$imageCreateFuntion 
es una variable

y luego la usas como una funcion

Código PHP:
if (!$img $imageCreateFuntion($pathImagen)) 
es asi?

en caso de que este mal escrito, podrias mostrar el codigo de la funcion, el problema deberia estar dentro de la funcion
  #4 (permalink)  
Antiguo 25/09/2009, 04:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Duda con código PHP

Muchas gracias por las respuestas, os adjunto el codigo a ver si os ayuda a ver algo:

<?

//Libreria para general las imagenes en miniatura. Se podrán generar imagenes .GIF, siempre y cuando, tengamos
// instalada la libreria GD versión 2.0.29 o superior.

function file_type($nombre) {
// Función que devuelve el tipo de la imagen en función del nombre de la misma.

$lastpoint=strrpos($nombre,'.');
$extension=strtolower(substr($nombre,$lastpoint+1) );

$tipoImagen = '';
switch ($extension) {
case 'jpe':
case 'jpeg':
case 'jpg':
$tipoImagen = 'jpeg';
break;
case 'gif':
$tipoImagen = 'gif';
break;
case 'png':
$tipoImagen = 'png';
break;
}

return $tipoImagen;
}

function createThumb($imagen,$dirThumbs,$AnchuraMaxima,$Alt uraMaxima) {
// La variable imagen contendrá la ruta física completa de la imagen.

$pathImagen =$imagen;

//comprobamos si existe la imagen inicial, si no existe, salimos
if (!file_exists($pathImagen)) {
return(false);
}

//Obtención de la extensión del fichero

if ($dirThumbs)
$dir_thumb = $dirThumbs;

else
$dir_thumb='thumbs/';


$nombre=basename($pathImagen); // Aquí tendremos el nombre de la imagen.
$camino=dirname($pathImagen)."/";// Aquí la ruta especificada para buscar la imagen.

$tipoImagen = file_type($nombre); //Aqui obtengo el tipo de la imagen

// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb)) {
if (!mkdir($camino.$dir_thumb, 0777))
return(false); //die("No se ha podido crear el directorio ".$camino.$dir_thumb);
}

$fileFinalThumb = $camino.$dir_thumb.$nombre; // Fichero final donde irá el thumb
$relativeThumb = dirname($imagen).'/'.$dir_thumb.$nombre; //url de acceso a la imagen
/*echo $relativeThumb."<br>";
echo $camino.$nombre."<br>";
echo $fileThumb."<br>";*/

// Aquí comprobamos si el thumbnail que queremos crear no existe previamente.
if (@file_exists($fileFinalThumb)) {
// echo "existe: $fileFinalThumb<br>";
$fechaModImg = filemtime($pathImagen);
$fechaModThumb = filemtime($fileFinalThumb);

//Si la fecha de creación del thumb es mayor que la de la imagen, entonces no regenero el thumb.
if ($fechaModImg < $fechaModThumb) {
return($relativeThumb);
}
}

$imageCreateFuntion = 'imagecreatefrom'.$tipoImagen;
if (!$img = $imageCreateFuntion($pathImagen))
return(false); //or die("No se encuentra la imagen $camino$nombre<br>\n");

//******** calculamos ancho y alto en funcion de los limites que tenemos
// miramos el tamaño de la imagen original...
if (!$AnchoAlto=getimagesize($pathImagen)) {
return(false); //die("Problemas con $camino$nombre al obtener el tamaño<br>\n");
} else {
if (($AnchoAlto[0] > $AnchuraMaxima) || ($AnchoAlto[1] > $AlturaMaxima)){
$cabe = 0;
} else{
$cabe = 1;
}
}

$anchura=$AnchoAlto[0];
$altura=$AnchoAlto[1];

if ($cabe==0) {
//si el alto recalculado es mayor que el maximo, se recalcula el ancho
$ratio = ($AnchuraMaxima /$AnchoAlto[0]);
$altura = intval($ratio*$AnchoAlto[1]);
$anchura = $AnchuraMaxima;
if ($altura>$AlturaMaxima){
$ratio = ($AlturaMaxima /$AnchoAlto[1]);
$altura = $AlturaMaxima;
$anchura = intval($ratio*$AnchoAlto[0]);
}
}
//********

// esta será la nueva imagen reescalada
// if (function_exists('imagecreatetruecolor')) {
$thumb = imagecreatetruecolor($anchura,$altura);
/*} else {
$thumb = imagecreate($anchura,$altura);
} */

// con esta función la reescalamos
imagecopyresized($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $AnchoAlto[0], $AnchoAlto[1]);

// voilà la salvamos con el nombre y en el lugar que nos interesa.
$imageFuntion = 'image'.$tipoImagen;
$imageFuntion($thumb,$fileFinalThumb);

return($relativeThumb);
}
?>
  #5 (permalink)  
Antiguo 25/09/2009, 04:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Duda con código PHP

Ok, por lo que veo tu error esta en la funcion 'file_type()'

Como podras ver, obtiene la extension usando el substr, y comparando con todas extensiones minusculas. En caso de que subas una imagen con extension ".JPG" como lo guardar el microsoft paint, ya dejaria de funcionar.
Ademas, de la forma en que buscas el 1er punto del archivo ( con strpos ), si subis una imagen que tenga mas de 1 punto en su nombre, tambien tiraria error.

Intenta reemplazar tu funcion file_type por esta:
Código PHP:
function file_type($nombre) {
$image_info getimagesize($nombre);


$tipoImagen '';
switch (
$image_info['mime']) {
case 
'image/jpe':
case 
'image/jpeg':
$tipoImagen 'jpeg';
break;
case 
'image/gif':
$tipoImagen 'gif';
break;
case 
'image/png':
$tipoImagen 'png';
break;
}

return 
$tipoImagen;

  #6 (permalink)  
Antiguo 25/09/2009, 04:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Duda con código PHP

Muchas gracias por tu respuesta Hildegaard.
Si reemplazo el codigo que me has dado por el que tenia me tira los siguientes errores, incluido el que tenia en un principio. Que hago mal?
Disculpas por mi ignorancia pero estoy aprendiendo y me cuesta interpretar este codigo que me hicieron.

Warning: getimagesize(foto_4801.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /furanet/sites/exsi.es/web/htdocs/includes/thumbnailing.php on line 7

Warning: getimagesize(foto_32.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /furanet/sites/exsi.es/web/htdocs/includes/thumbnailing.php on line 7

Warning: getimagesize(foto_4814.bmp) [function.getimagesize]: failed to open stream: No such file or directory in /furanet/sites/exsi.es/web/htdocs/includes/thumbnailing.php on line 7

Fatal error: Call to undefined function imagecreatefrom() in /furanet/sites/exsi.es/web/htdocs/includes/thumbnailing.php on line 79
  #7 (permalink)  
Antiguo 25/09/2009, 10:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Duda con código PHP

Te tira error porque el parametro que le estas enviando a la funcion tiene que ser el archivo (la url exacta o relativa del archivo, no solo su nombre).

por ejemplo

file_type("../archivos/archivo.jpg");
o
file_type("/www/archivos/archivo.jpg");

o lo que sea,. pero no solo el nombre del archivo (a menos que el archivo de imagen a trabajar se encuentre en la misma carpeta que el php).
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 15:47.