Foros del Web » Programando para Internet » PHP »

fotos con php

Estas en el tema de fotos con php en el foro de PHP en Foros del Web. hola todos estoy realizando una aplicacion, que necesito incluir fotos asociada a los registro, pero no se como hacerlo. He pensado que cada registro tenga ...
  #1 (permalink)  
Antiguo 22/08/2004, 14:33
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
fotos con php

hola todos estoy realizando una aplicacion, que necesito incluir fotos asociada a los registro, pero no se como hacerlo.

He pensado que cada registro tenga unas cuatro foto, tambien se que no se debe poner fotos en base de dato por el aumento de tamaño de esta.

Asi que me gustaria saber como a travez de un formulario hecho en php y campos que sean link (si ese tipo de campo existe claro) o alguna otra forma de hacerlo, lo que necesito saber es como debo decirle a mysql el tipo de dato para la fotos y el thumbail, como llamar al tumbail y luego a la foto y por ultimo algo para subilar y ante de subirla validar su tamaño.

Si existiera algun documento o algun manual por fa decirmelo.

No se si me he explicado bien.

Gracias a todos
  #2 (permalink)  
Antiguo 22/08/2004, 14:43
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
mmm, creo que puedes crear dentro de una tabla, un campo llamado thumbnail y otro llamado foto.

en lo personal no te recomiendo que en la base de datos pongas la foto, sino que pongas la url, y luego la subas en el servidor en una carpeta, No crees?
  #3 (permalink)  
Antiguo 22/08/2004, 18:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
yo tambien lo creo pero lo que no se como lo hago.

que tipo de campo es???

y como creo los link.

Tengo el image4 voy a ver sus codigo fuente a ver que saco en claro.
  #4 (permalink)  
Antiguo 22/08/2004, 20:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En tu BD se trata de que guardes sólo los nombres de los archivos respectivos de la "foto" y el "thumbnail". Ese tipo de campos cara a tu BD lo debes tratar como el de una cadena más (string) . tipo VARCHAR(255) (o menos .. no hace falta más).

El proceso que necesistas pasa primero por "subir" la imagen al servidor (la original) usando las técnicas que describe este capítulo del manual oficial de PHP (y que en las FAQ's de este foro y si buscas por "Upload" verás muchos ejemplos).

http://www.php.net/manual/en/features.file-upload.php

Una vez que tengas tu "foto" en el servidor pasarías inmediatamente a generar tu "thumbanil" (en las FAQ's de este foro PHP tienes más ejemplos para esto ya hechos) .. Si ves ejemplos que "generan" el thumbnail dinámicamente .. recuerda que las funciones tipo imagejpg() .. etc pueden (tienen un parámetro extra) para indicar que en lugar de que sean "entregadas" al buffer de salida de pHP para que lo puedas mostrar (previo uso de header() con el "content-type" adecuado) en HTML para un navegador .. puedes indicar que se genere en un archivo en tu tu servidor (con el nombre que gustes) .. así que ya tendrás en ese punto los dos nombres: foto y thumnanil para que hagas tu INSERT a tu BD con esas "cadenas" (strings) simples.

Un saludo,
  #5 (permalink)  
Antiguo 23/09/2004, 10:47
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
Hola a todos de nuevo vuelvo a intertar los de las imagenes, ya he conseguido subir las fotos con algun ejemplo que he encontrado por aqui, a este ejemplo le estoy intentando añadir, la funcion de thumbails pero no me hace nada, me guarda la foto normal pero del thumbail nada, antes me dada otros fallos, como que no encontraba la foto original, pero eso creo tenerlo resulelto, pongo aqui el codigo que estoy utilizando a ver si me podeis echar una manita, de verda que he leido y leido y no me aclaro.

Estos codigo lo he cogido de las faqs y agunl que otro manual de desarrollowebs

<?
//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["texto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")||strpos($tipo_archivo, "jpg")) && ($tamano_archivo < 500000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 500 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'],"fotos/".$nombre_archivo)){

echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>
<?
thumbjpeg($nombre_archivo, 125);
function thumbjpeg($nombre_archivo,$altura) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "thumb/";
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$prefijo_thumb = "tn_";

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

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

// Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$n ombre)) {
echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
$img = @imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");

// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");

// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);

// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);

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

// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb .$nombre);
}
}
?>
  #6 (permalink)  
Antiguo 23/09/2004, 12:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tu imagen (la que subes por HTTP vía tu formulario HTML) la dejas en:

fotos/".$nombre_archivo
(así dice tu 2º parámetro de move_uploaded_file() .. ) así que será desde ahí la ruta de tu imagen en el servidor la que deberás tomar para aplicar tu función que crea el thumbnail y que ahora sólo le dices "$nombre_archivo" .. que como veras no está ahí la imagen sino en fotos/

Pero, .. veo también que entre todos los cambios que has hecho (deberías limpiar el código antes de poner algo en el foro .. así nos lias) .. por aquí haces:
$camino=dirname($nombre_archivo)."fotos/";

eso no es correcto .. en tal caso al reves y el dirname() sobra o en su defecto deberías usar basename() para quedarte con el nombre de archivo sólo descartando la ruta :
Código PHP:
$camino="fotos/".$nombre_archivo
Como ya te dije .. puedes pasarle el nombre con ruta completo a tu función .. por qué esta originalmente ya hace sus "basename()".

Un saludo,
  #7 (permalink)  
Antiguo 24/09/2004, 14:35
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
bueno con el codigo que voy a poner abajo me crea el directorio dentro de fotos pero los thumbail nada de nada, ma da un error de que no localiza la imagen ¿pero como es capaz de crearme el directorio de los thumbails?. He intentado modificar varias cosa pero me daba errores distinto y creo que me alejaba de la solucion, creo que este codigo es el mas cercano a la solucion.

Este es la parte de incluir los thumbails doy por bueno la parte de subida de la imagen. O eso creo.

thumbjpeg("fotos/".$nombre_archivo, 125);
function thumbjpeg($nombre_archivo,$altura) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "thumb/";
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$prefijo_thumb = "tn_";

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

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

// Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$n ombre)) {
echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
$img = @imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");

// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");

// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);

// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);

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

// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb .$nombre);
}
}
?>
  #8 (permalink)  
Antiguo 27/09/2004, 08:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La función mkdir() es la que crea tus directorios .. pero si tiene el @ delante vas a "silenciar" los mensajes de error concretos que obtengas ahí mismo . .así que quitalo y observa el error concreto que obtienes.

Si vas a realiazar más preguntas sobre el tema, indica el mensaje de error exacto que obtienes.

Un saludo,
  #9 (permalink)  
Antiguo 27/09/2004, 11:43
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
le he quitado la @ a mkdir, y nada no me da errores, me sale esto en el explore:

El archivo ha sido cargado correctamente.
fotos/thumb/tn_images2.jpg NO existía
No se encuentra la imagen fotos/images2.jpg

el caso es que el directorio thumb lo crea bien pero no me da las imagenes.

He observado que si intento escribir los arays (perdonarme si no se llaman aray, pero tengo las duda si son aray o variavles) $nombre_archivo y $cadenatexto despues del scrip del thumbail no imprime nada, pero si lo imprimo dentro o despues del scrip para subir la foto si me lo imprime.

Tendra algo que ver eso????????

Última edición por famp; 27/09/2004 a las 11:45
  #10 (permalink)  
Antiguo 28/09/2004, 09:59
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
enga una ayudita, de verdad que lo estoy intentado pero mi nivel intelectual no me da para mas.

por fa
  #11 (permalink)  
Antiguo 28/09/2004, 11:03
 
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 14 años, 9 meses
Puntos: 0
revisaste si realmente te esta creando los directorios con permisos 777?
  #12 (permalink)  
Antiguo 28/09/2004, 15:55
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
estoy en windows creo que eso no me hace falta, pero insisto que el directorio thumb lo crea, lo que no me crea es los thumbail
  #13 (permalink)  
Antiguo 01/10/2004, 14:36
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
por favor una ayudita, no quiero pecar de pesado es que no doy con la tecla.
  #14 (permalink)  
Antiguo 09/10/2004, 07:41
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 13 años, 9 meses
Puntos: 0
arreglado

hola todos de nuevo mi mensage es para deciros que todo esta arreglado el fallo estaba en la libreria del gd yo tenia el phpgd.dll y la he actualizado al phpgd2.dll y todo areglado


gracias a todos por vuestra colaboracion
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.