La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Desarrollo Web en Entorno Servidor

Presentaciones similares


Presentación del tema: "Desarrollo Web en Entorno Servidor"— Transcripción de la presentación:

1 Desarrollo Web en Entorno Servidor
Tema 11: Imágenes en bases de datos Introducción. Almacenando en columnas BLOB. Guardando vínculos a los ficheros de imagen.

2 1.Introducción. La biblioteca GD.
El manejo de imágenes dinámicas requiere que esté instalada la librería de PHP llamada php_gd2.dll. En la versión de PHP que estamos manejando se instala y activa por defecto. En nuestro caso se trata del archivo php_gd2.dll que está en c:\xampp\php\ext. Para seguir adelante debemos comprobar que todo funciona correctamente para ello ejecutamos el fichero gdtest.php. <?php echo '<pre>'; print_r(gd_info()); echo '</pre>'; ?> Nos debe salir algo así:

3 1.Introduccion El anterior script no sólo sirve como prueba para asegurarnos de que GD y PHP están funcionando sino que además nos permite ver las opciones y limitaciones para el funcionamiento de GD en PHP, vemos la existencia de compatibilidad con JPG, GIF y PNG. Existe un debate sobre si se pueden guardar o no de forma eficiente imágenes en una base de datos utilizando el tipo de columna blob de MySQL. Vamos a ver como realizarlo de las dos formas.

4 2.Almacenando en columnas BLOB.
Se debe trabajar con la carpeta imagtablas que copiaremos en c:\xampp\htdocs. En esta carpeta tenemos los scripts: index.php Contiene enlaces a Creartabla.php: Crea la tabla con la columna BLOB e introduce algunas filas en ella. Verimagen.php: Recorre la tabla fotos y muestra las datos. Llama a ver.php Formulario.php Selecciona el fichero de imagen a subir . Recordemos que PHP guarda información de los archivos recien cargados en la matriz $_FILES, que tiene múltiples niveles y cuya primera clave es el nombre asignado al campo especificado en <INPUT type="file" name="foto"> Al pulsar Enviar llama a grabar_img.php. En este script la información del archivo subido estará disponible en $_FILES ['foto']. El siguiente nivel en la matriz $_FILES es información sobre el archivo cargado. Las claves posibles son: name : Hace referencia al nombre del archivo tal y como estaba en el equipo local del usuario type: Guarda el tipo MIME tal y como lo proporciona el explorador. size: El tamaño del archivo cargado en bytes. tmp_name: Nombre del qrchivo cargado en el servidor error: Código del error asociado a la transferencia del archivo . Se trata de un valor numérico. PHP tiene constantes predefinidas para representar el valor y si utilizamos estas constantes nuestro código será más fácil de leeer y administrar. Estas constantes son las siguientes:

5 2.Almacenando en columnas BLOB.
UPLOAD_ERR_OK : El archvo de ha cargado correctamente y no hay ningún error. UPLOAD_ERR_INI: El tamaño del archivo excede el permitido por la directiva upload_max_filesize establecida en php.ini. UPLOAD_ERR_FORM_SIZE: El tamaño del archivo cargado excede el permitido por la directiva MAX_FILE_SIZE establecida en el formulario HTML. UPLOAD_ERR_PARTIAL: El archivo se ha cargado parcialmente y su descarga no se ha completado. UPLOAD_ERR_NO_FILE: El usuario no ha cargado ningún archivo. UPLOAD_ERR_NO_TMP_DIR: No se encuentra el directorio temporal del servidor en el que se ha cargado el archivo inicialmente. UPLOAD_ERR_CANT_WRITE: el directorio temporal existe en el servisor pero PHP no puede escribir en él. UPLOAD_ERR_EXTENSION: La carga del archivo se ha detenido por una extensión PHP. Una vez subida alguna imagen a la b.d. podemos usar la opción verimagen para comprobarlo.

6 3.Guardando vínculos a los ficheros de imagen
Se debe trabajar con la carpeta imagcarpeta que copiaremos en c:\xampp\htdocs. En primer lugar ejecutaremos el script crearbdmovies.php que creará la base de datos con la que trabajaremos en esta parte del tema. Tenemos el script upload_image.html con la funcionalidad habitual de los ya vistos de subida de archivos. Para el tratamiento de la imagen transferida disponemos del script check_image0.php. Después de comprobar que la carga del archivo ha sido satisfactoria, utilizamos la función getimagesize() para recuperar información sobre él y devuelve un array con 5 elementos: 0 : Anchura de la imagen medida en pixeles. 1: Altura de la imagen medida en pixeles. 2: Un valor numérico que identifica l tipo de imagen del archivo. 3: Una cadena como height=“YYY” width=“XXX” que se puede utilizar para incluir una etiqueta img de HTML. 4: Una cadena correspondiente al tipo MIME de la imagen. PHP ofrece constantes predefinidas que se corresponden con el valor numérico que identifica el tipo de imagen del archivo devuelto por el índice 2. Algunas de dichas constantes son las siguientes: IMAGETYPE_GIF : Para imágenes GIF (TIPO MIME image/gif) IMAGETYPE_JPG : Para imágenes JPG (TIPO MIME image/jpeg). IMAGETYPE_PNG : Para imágenes PNG (TIPO MIME image/png.) IMAGETYPE_BMP : Para imágenes GIF (TIPO MIME image/bmp) .…………………...

7 3.Guardando vínculos a los ficheros de imagen
Una vez determinado el tipo de imagen cargado, lee el archivo en memoria. La función imageccreatefrom*() abre un archivo de imagen y devuelve un controlador de recurso para trabajar con él. Recordemos que primero el archivo se guarda en una ubicación temporal y después tendremos que moverlo a una ubicación más permanente antes de perderlo para siempre. Normalmente utilizaremos la función move_uploaded_file() . El primer parámetro es el nombre del archivo temporal y el segundo la ubicación permanente, como en el siguiente ejemplo: move_uploaded_file ($_FILES[‘upload_file’][‘tmp_name’], $dir.’/’.$_FILES[‘upload_file’][‘name’], Normalmente esta acción es suficiente. Sin embargo hemos elegido cargar la imagen en memoria utilizando la función correcta y después volviendo a escribirla a un nuevo archivo en la ubicación de destino en el directorio images. Cada una de las funciones imagegif(), imagejpeg() e imagepng() guarda los datos de la imagen accesbles mediante el recurso para el nombre del archivo especificado. En el caso de la función imagejpeg() acepta un tercer parámetro opcional que afecta a la calidad del archivo debido a la comprensión (valor 100 calidad cien por cien)

8 3.Guardando vínculos a los ficheros de imagen
Como hemos visto hacemos dos operaciones INSERT y UPDATE. Sin embargo PHP puede utilizar GD para convertir tipos de imagen de un formato a otro fácilmente. Lo que vamos a a hacer es permitir que se suban en los tres formatos pero las guardaremos en formato JPEG. De esta forma no necesitaremos la columna filename. En primer lugar ejecutaremos el script alterimages.php . Este script realiza el correspondiente ALTER TABLE sobre la tabla images. Hemos hecho algunas modificaciones en check_image0.php y lo hemos salvado con el nombre check_image1.php . Ya no necesitamos distinguir el tipo de archivo una vez cargada la imagen en memoria con la función imageccreatefrom*() apropiada, por lo que hemos eliminado el bloque switch crea la imagen y guarda la extension en $ext. A continuación se guarda la imagen como JPEG utilizando la función imagejpeg() , independientemente de qué tipo de formato válido se haya cargado. EFECTOS ESPECIALES El check_image2.php junto con image_effect.php permite al usuario aplicar un filtro a su imagen tras haber sido cargada y obtener una vista previa del efecto antes de guardarlo de forma permanente. Se ha reestructurado el código con distintas instrucciones que comprueban el valor de $_POST[‘submit’]. Hemos incluido cuatro efectos diferentes pero en realidad existen 11 filtros. MINIATURAS Ver check_image3.php junto con gallery.php


Descargar ppt "Desarrollo Web en Entorno Servidor"

Presentaciones similares


Anuncios Google