Cargar imagen en PHP

Hola chicos, estoy haciendo una página en php en la que una persona a través de un formulario puede subir una noticia, mi idea es que tambien pueda...

La FAQ Cargar imagen en PHP tiene

Pertenece a la categoría:

Pregunta
Hola chicos, estoy haciendo una página en php en la que una persona a
través de un formulario puede subir una noticia, mi idea es que
tambien pueda subir una imagen.
Ahora para que la casa se vea bien cuando voy a la seccion noticias,
mi idea es crear una nueva imagen a partir de la cargada, con los
tamaños que se ajusten a la página.




Al parecer la biblioteca GD es la apropiada, estoy en lo correcto???


Respuesta de Sara Álvarez
Lo primero que debes hacer es aprender a hacer upload de ficheros al servidor. Así, cuando cargues una noticia en la base de datos también podrás cargar un archivo que se puede utilizar como imagen.


Luego, una vez cargada la imagen la puedes procesar utilizando las funciones de imagen de php, que utilizan las librerías GD para procesar y editar imágenes con el propio servidor web.


Solo tienen un par de problemas: Por un lado tienes que saber que el procesamiento de imágenes consume recursos del servidor, así que si tu sitio tiene muchas cargas o procesamientos de imágenes, tendrías que tener cuidado que no se sature. Por otro lado, el procesamiento de la imagen directamente con PHP no da tanta calidad de imagen como puede dar editarla con un programa tipo Photoshop.




En DesarrolloWeb.com tenemos un manual dedicado a la biblioteca gráfica GD donde veras las propiedades y funcionalidades de esta librería de funciones para tratamiento de imágenes.

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 6 comentarios a la faq
2 comentarios no revisados
4 comentarios revisados:
Por: Jorge Molina
21/7/05
Creo que tu idea esta bien, pero hay un detalle que se te escapó.
La imagen que quieres mostrar puede ser redimensionada al cargarla en el servidor, generando de esta forma una imagen que tenga el tamaño justo para mostrarla.
Existen codigos en PHP para lograr hacer esto. A continuación copio uno que modifique desde uno para crear miniaturas.

En ancho puedes fijar el valor o pasarlo por get o post. En $file debes poner el nombre de archivo logicamente. La variable $copia es el nombre de la imagen cambiada de tamaño.

En el codigo puedes poner un mensaje de "Estamos procesando" o poner como ultima linea un codigo para enviar a otra pagina.
[header("Location:pagina.php");]

<?php
$ancho= "600";
$file="1.jpg";

$rest = pathinfo($file);
$rest = $rest["extension"];

// header("Content-type: image/jpeg");

$size=getimagesize($file);
$width=$size[0];
$height=$size[1];
if ($width > $ancho)
{
$newwidth = $ancho;
$newheight=intval($height*$newwidth/$width);

$oldimage=imagecreatefromjpeg($file);

$newimage=ImageCreateTrueColor($newwidth,$newheight);
ImageCopyResampled($newimage,$oldimage,0,0,0,0,$newwidth,$newheight,$width,$height);

$copia="2.jpg";

imagejpeg($newimage,$copia);

imagedestroy($newimage);
imagedestroy($oldimage);
}
?>


Espero que te sirva.
Por: Gemu
26/7/05
Si lo que necesitas es aprender a subir archivos desde una pagina web, la respuesta la tienes en el manual de php, esta muy bien documentada: http://www.php.net/manual/es/features.file-upload.php

La forma es muy simple, en tu formulario debes colocar en la etiqueta <form> lo sig. enctype="multipart/form-data", para indicar que enviaras archivos binarios, luego el campo para enviar archivos debe ser del tipo "file" <input name="userfile" type="file"> (automaticamente se agrega un boton de "examinar"), despues solo resta enviar....el servidor se encarga de recibir tu archivo y colocarlo en un directorio temporal con un nombre tambien temporal....luego desde php usas la matriz $_FILES[] para obtener todos los datos del archivo y copiarlo o moverlo a donde quieras en tu sitio....eso esta muy bien explicado en el manual.
Por: Luis
02/9/05
Introduce tu comentario...Y si lo que quieres no es guardar la imagen en si sino guardar su direccion en la bese de datos pero utilizando tambien el input,¿Como lo haces???
Por: Christian González
16/9/05
pues lo que tienes que hacer tambien en luego de haberla copiado o movido hacer un insert a la base de datos, el nombre del archivo lo obtienes de $_FILES[nombre_del_campo_file][]name] o si lo copiaste con otro nombre sería $directorio_destino.$nombre_nuevo

Christian González
www.christiangonzalez.tk

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo