Foros del Web » Programando para Internet » PHP »

Reconocer extension con libreria GD

Estas en el tema de Reconocer extension con libreria GD en el foro de PHP en Foros del Web. Hola a todos, Tengo un sistema para redimensionar imagenes pero no se como reconocer la extension del archivo para llamrlo corectamente. Les adjunto los archivos: ...
  #1 (permalink)  
Antiguo 22/11/2006, 10:21
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 3 meses
Puntos: 2
Reconocer extension con libreria GD

Hola a todos,
Tengo un sistema para redimensionar imagenes pero no se como reconocer la extension del archivo para llamrlo corectamente.

Les adjunto los archivos:

redimensionar.php
Código PHP:
<?php
$anchura
=150;
$hmax=150;
$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);
?>
Y para llamar la imagen:
Código HTML:
<img src='redimensionar.php?imagen=<? echo $id_usuario;?>'> 
En el ejemplo para llamar a la imagen ven k no tiene extension, ya que no se reconocer la que le pertenece y como pueden ser 3 tipos...

Espero haberme explicado y haber si pueden ayudarme,
Muchas gracias,
  #2 (permalink)  
Antiguo 22/11/2006, 10:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pero .. aclara un poco la situación..

En $id_usuario que valor tienes ahí? ..

En tu código de ejemplo en "imagen" (por GET) se espera un nombre de archivo.

En $datos['mine'] (o $datos[2] .. ahí no lo he probado .. es más "natural" y facil la lectura del código si usas los arrays asociativos .. creo yo). tienes el formato MIME del archivo.

No sé por qué dices "ven que no tiene extensión" .. explica eso .. por qué ya te comento que tu código actual espera un nombre de archivo (con ruta o sin ella, pero OJO por qué el "basename()" le quitaría la ruta si el archivo viene con ella.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 22/11/2006, 11:03
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 3 meses
Puntos: 2
Veamos,

yo en $id_usuario tengo un id remoto del usuario al que hago la consulta de su perfil....ya sea un 1 o un 200.

Cuando el usuario sube la imagen...se sube con su id como nombre i su correspondiente extension.

Entonces cuando hago la consulta de perfil, mediante el $_GET recupero la id de ese usuario y busco la imagen que es la misma del $_GET.

Lo entienden ahora?? Siento no haberlo explicado bien,
Saludos
  #4 (permalink)  
Antiguo 22/11/2006, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por pekpon Ver Mensaje
Veamos,

yo en $id_usuario tengo un id remoto del usuario al que hago la consulta de su perfil....ya sea un 1 o un 200.

Cuando el usuario sube la imagen...se sube con su id como nombre i su correspondiente extension.

Entonces cuando hago la consulta de perfil, mediante el $_GET recupero la id de ese usuario y busco la imagen que es la misma del $_GET.

Lo entienden ahora?? Siento no haberlo explicado bien,
Saludos
En definitiva .. tu tienes una imagen en tu servidor como archivo físico que se llama tipo:

1.gif o 1.jpg .. o que tienes exactamente? ..

Por qué en ese script en concreto no se vé una consulta SQL a tu BBDD para obtener de la tabla que gestiona tus datos de ese "perfil" el nombre de su imagen asociada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 22/11/2006, 11:23
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 3 meses
Puntos: 2
haber,
tengo un archivo fisico como bien dices que es la imagen que suben los usuarios.
la consulta a la base de datos me la he ahorrado ya que no hace falta citarla en este post.
saludos,

REEDITO: Por si alguien lo necesita posteo aqui la consulta a la BBDD:
Código PHP:
<?
$id_but 
$_GET['id'];
$result mysql_query("SELECT id_usuario FROM butaca WHERE butaca = '$id_but'");
$id_usuario mysql_result($result,0);
?>

Última edición por pekpon; 22/11/2006 a las 14:27
  #6 (permalink)  
Antiguo 22/11/2006, 14:34
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 3 meses
Puntos: 2
Aun no se si no me explico bien...porfavor decidme algo...jejeje

Saludos y siento ser tan pesado,
  #7 (permalink)  
Antiguo 22/11/2006, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por pekpon Ver Mensaje
Aun no se si no me explico bien...porfavor decidme algo...jejeje

Saludos y siento ser tan pesado,
Lo que pasa que no puedes omitir datos .. para lo que a tí no es relevante u omites .. ahí es donde puede estar el problema.

Yo no conozco tu sistema .. no veo el código completo .. no tengo acceso a los archivos ni donde están ni como los gestionas .. He de ahí tanta "pregunta" para aclarar la situación.

Más preguntas:

1) ¿Que dato entrega la ejecución de tu consulta SQL: $id_usuario para un $_GET['id'] cualquiera?

2) ¿En tu servidor en que ruta (path) tienes tus archivos? .. al mismo nivel que el script que ejecuta este proceso o en otro sitio (directorio)?

Hago estas preguntas por qué no sé realmente que tiene tu variable $id_usuario ... será un dato tipo "1"? .. sin más .. o "1.jpg" .. Toda imagen que sube tu usuario "asumes" que es de cierta extensión? ".jpg" y así creas el archivo fisicamente? ...Necesitas la extensión .. si ese "ID" no la tiene como dato que gestionas .. concatenasela:

Código PHP:
$nombre=basename($id_usuario.".jpg"); 
Y "OJO" con el basename() .. hasta que no indiques donde almacenas tus archivos .. si están en el mismo directorio que ese script o bien en otro, tal vez ahí te haga falta quitar el basename() y concatenar de la misma forma la ruta (path) hacia tus archivos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 22/11/2006, 15:03
 
Fecha de Ingreso: diciembre-2005
Ubicación: BCN
Mensajes: 165
Antigüedad: 18 años, 3 meses
Puntos: 2
Cita:
Iniciado por Cluster Ver Mensaje
Código PHP:
$nombre=basename($id_usuario.".jpg"); 
Ahi es donde esta el problema.
Te cuento; Los usuarios suben una imagen, a la que mediante un script la llamo: Id del usuario+extension (ejemplo: 45.jpg).

El problema viene que al llamar el thumbnail de esta imagen, no se como definir su extension puesto que puede ser .gif,.png o .jpg.

Es ahi donde tengo el problema; lavariable $id_usuario solo contiene un numero normal i corriente por eso me hace falta añadir una extendion cuando llamo la imagen mediante el 'src=...'

En el ejemplo que me has puesto, si la imagen fuera 45.png ya no se veria ya que tu has puesto'.jpg' no se si me entiendes....

PD: El $_GET['id'] un identificador del 1 al 2000 sobre el que esta la imagen del usuario. Asi si nuestro usuario tiene su imagen en el puesto 1200, al hacer la consulta busco el usuario al que corresponde el 1200 i cojo su ID que es el que me devuelve el $id_usuario.

Código PHP:
$_GET['id'] = sitio del 1 al 2000 en el k el usuario tiene su imagen.
$id_usuario recoje el ID real de usuario correspondiente al $_GET
PD2: Las imagenes se guardan en el directorio /img_us del directorio raiz.

Muchas gracias y saludos,

Última edición por pekpon; 22/11/2006 a las 15:10
  #9 (permalink)  
Antiguo 22/11/2006, 15:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Si, te entiendo ..

Te comento que deberías cambiar la filosofía de tu "upload" de archivos . .te resulta menos costoso almacenar en tu BBDD el nombre de tu archivo .. sea el original o el que tu definas (en base a tu ID+extensión) .. así sólo necesitas obtener ese campo "nombre_imagen" de tu BBDD previa consulta SQL por ese ID de tu usuario y listo .. cero problemas con el nombre del archio u obtener su extensión si tienes problemas en identificarlo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 01:29.