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.

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Jorge Molina

21/7/2005
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.

Gemu

26/7/2005
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.

Luis

02/9/2005
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???

Christian González

16/9/2005
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

SICNO

19/9/2007
Muchas gracias mi amig@ Tu codigo me sirvio para mi tesis y funciona perfecto. Gracias...

FLORENCIA

07/9/2009
pregunta
Hola como se puede hacer para que dentro de una misma pagina se carguen 3 imagenes diferentes...yo hice una base de datos las cuales tienen 3 campos foto1 es uno con un char de 3, foto2 es lo mismo ya q tiene igual la extencion y foto3, pero cuando voy a la pagina y aplico el codigo php solo me carga 1 imagen....como puede ser? les pego el codigo para q vean del abm a ver si esta mal eso

<?php
if($_POST["guardar"]){
mysql_connect("localhost", "root", "" );
mysql_select_db("solyde_solydeus");
$imagen=pathinfo($_FILES["foto_h"]["name"]);
$imagen2=pathinfo($_FILES["foto_h1"]["name"]);
$imagen3=pathinfo($_FILES["foto_h2"]["name"]);
$imagen=$imagen["extension"];
$imagen2=$imagen2["extension"];
$imagen3=$imagen3["extension"];
mysql_query("insert into home (titulo_h, titulo_h_2, titulo_h_3, descripcion_corta, descripcion_corta_2, descripcion_corta_3, foto_h, foto_h1, foto_h2)
values('$_POST[titulo_h]', '$_POST[titulo_h_2]', '$_POST[titulo_h_3]', '$_POST[descripcion_corta]', '$_POST[descripcion_corta_2]', '$_POST[descripcion_corta_3]', '$imagen', '$imagen2', '$imagen3')");


move_uploaded_file($_FILES["foto_h"]["tmp_name"],
mysql_insert_id() .".". $imagen);
header("location:index.php");
move_uploaded_file($_FILES["foto_h1"]["tmp_name"],
mysql_insert_id() .".". $imagen2);
header("location:index.php");
move_uploaded_file($_FILES["foto_h2"]["tmp_name"],
mysql_insert_id() .".". $imagen3);
header("location:index.php");
}
?>
<html>
<head>
<link href="../proyecto_flor/estilos.css" rel="stylesheet" type="text/css">
<script src="../Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<link href="../estilo.css" rel="stylesheet" type="text/css">
<body>
<form method="post" action="noticias.php" enctype="multipart/form-data">
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><table width="780" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td height="77" colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10">&nbsp;</td>
<td width="300"><img src="../imagenes/logo.jpg" width="198" height="77" /></td>
<td width="460" height="77" align="right" valign="middle"><img src="../imagenes/ideasysol.jpg" width="180" height="70" /></td>
<td width="10">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td height="25" colspan="2" background="../imagenes/barra-menu.jpg"><table width="780" border="0" cellpadding="0" cellspacing="0" class="menu">
<tr>
<td width="10" height="25">&nbsp;</td>
<td width="760" height="25" align="center" valign="middle"><a href="../index.htm" class="menua">INICIO</a><span class="menua"> | <a href="../historia.htm">HISTORIA</a> | <a href="../filosofia.htm">FILOSOFIA</a> | <a href="../quienes_somos.htm">QUIENES SOMOS</a> | <a href="../muestras.htm">MUESTRAS</a> | <a href="../empresas.htm">EMPRESAS E INSTITUCIONES</a> | <a href="../noticias.htm">NOTICIAS</a> | <a href="../contacto.htm">CONTACTO</a></span></td>
<td width="10" height="25">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td width="780" height="200" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="textobold"> NOTICIA 1<br>
</span>
<table border="4" bgcolor="#e5e5e5" align="center" class="formulario">
<tr>
<td class="textobold"> Titulo
<input type="text" name="titulo_h" size="100" class="formulario"> </td>
</tr>
<tr>
<td class="textobold"> Texto
<textarea name="descripcion_corta" cols="97" rows="5" class="formulario"></textarea> </td>
</tr>
<tr>
<td class="textobold"> Foto
<input type="file" name="foto_h" size="100" class="formulario" id="foto_h"> </td>
</tr>
</table>
<br>
&nbsp;<span class="textobold"> NOTICIA2<br>
</span>
<table border="4" bgcolor="#e5e5e5" align="center" class="formulario">
<tr>
<td class="textobold"> Titulo
<input type="text" name="titulo_h_2" size="100" class="formulario"> </td>
</tr>
<tr>
<td class="textobold"> Texto
<textarea name="descripcion_corta_2" cols="97" rows="5" class="formulario"></textarea> </td>
</tr>
<tr>
<td class="textobold"> Foto
<input type="file" name="foto_h1" size="100" class="formulario" id="foto_h1"> </td>
</tr>
</table>
<br>
&nbsp;<span class="textobold"> NOTICIA3<br>
</span>
<table border="4" bgcolor="#e5e5e5" align="center" class="formulario">
<tr>
<td class="textobold"> Titulo
<input type="text" name="titulo_h_3" size="100" class="formulario"> </td>
</tr>
<tr>
<td class="textobold"> Texto
<textarea name="descripcion_corta_3" cols="97" rows="5" class="formulario"></textarea> </td>
</tr>
<tr>
<td class="textobold"> Foto
<input type="file" name="foto_h2" size="100" class="formulario" id="foto_h2"> </td>
</tr>
</table>
<div align="right">
<input type="submit" name="guardar" value="Guardar" id="guardar">
</div>
<br>
<br></td>
</tr>
<tr>
<td colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr> </tr>
</table></td>
</tr>
<tr>
<td colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr> </tr>
</table>
<img src="../imagenes/linea.jpg" width="780" height="2" /></td>
</tr>
<tr class="borde">
<td height="20" class="pie">&nbsp;&nbsp;Solydeus.org &copy; 2009. Todos los derechos reservados.</td>
<td height="20" class="arialgrispie"><div align="right"><a href="http://p-opuestos.com/">Dise&ntilde;o: PolosOpuestos &nbsp;&nbsp;</a></div></td>
</tr>
</table></td>
</tr>
</table>
<br>
</form>
</body>
</head>
</html>

y este es el codigo del archivo al cual tienen que subir

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("solyde_solydeus");
$q=mysql_query("select * from home");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Fundaci&oacute;n Solydeus</title>
<style type="text/css">
<!--
body {
background-color: #999999;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
}
-->
</style>
<link href="../estilo.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="420" valign="top"><table width="780" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td height="77" colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10">&nbsp;</td>
<td width="300"><img src="../imagenes/logo.jpg" width="198" height="77" /></td>
<td width="460" height="77" align="right" valign="middle"><img src="../imagenes/ideasysol.jpg" width="180" height="70" /></td>
<td width="10">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td height="25" colspan="2" background="../imagenes/barra-menu.jpg"><table width="780" border="0" cellpadding="0" cellspacing="0" class="menu">
<tr>
<td width="10" height="25">&nbsp;</td>
<td width="760" height="25" align="center" valign="middle"><a href="../index.htm" class="menua">INICIO</a><span class="menua"> | <a href="../historia.htm">HISTORIA</a> | <a href="../filosofia.htm">FILOSOFIA</a> | <a href="../quienes_somos.htm">QUIENES SOMOS</a> | <a href="../muestras.htm">MUESTRAS</a> | <a href="../empresas.htm">EMPRESAS E INSTITUCIONES</a> | <a href="../noticias.htm">NOTICIAS</a> | <a href="../contacto.htm">CONTACTO</a></span></td>
<td width="10" height="25">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td width="780" height="200" colspan="2"><script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','780','height','200','src','../imagenes/top','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','../imagenes/top' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="780" height="200">
<param name="movie" value="../imagenes/top.swf" />
<param name="quality" value="high" />
<embed src="../imagenes/top.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="780" height="200"></embed>
</object></noscript>
<br />
<br /></td>
</tr>
<tr>
<td colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10">&nbsp;</td>
<td width="760"><table width="760" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="118"><img src="../imagenes/1.jpg" width="118" height="122" border="0" usemap="#Map" /></td>
<td width="10">&nbsp;</td>
<td width="118"><img src="../imagenes/2.jpg" width="118" height="122" border="0" usemap="#Map2" /></td>
<td width="10">&nbsp;</td>
<td width="118"><img src="../imagenes/3.jpg" width="118" height="122" border="0" usemap="#Map3" /></td>
<td width="10">&nbsp;</td>
<td width="118"><img src="../imagenes/4.jpg" width="118" height="122" border="0" usemap="#Map4" /></td>
<td width="10">&nbsp;</td>
<td width="118"><img src="../imagenes/5.jpg" width="118" height="122" border="0" usemap="#Map5" /></td>
<td width="10">&nbsp;</td>
<td width="118"><img src="../imagenes/6.jpg" width="118" height="122" border="0" usemap="#Map6" /></td>
</tr>
</table></td>
<td width="10">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td height="25" colspan="2"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="10" colspan="7"><table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="img/agenda-copia.jpg" width="780" height="100" /></td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="7"><img src="../imagenes/linea.jpg" width="780" height="2" /><br /><br /></td>
</tr>
<tr>
<?PHP

while ($f=mysql_fetch_array($q)){

?>
<td width="11" rowspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td width="242"><img width="220" height="187" src="<?PHP echo ($f["idHome"]); ?>.<?php echo ($f["foto_h"]);?>"></td>
<td width="11">&nbsp;</td>
<td><img width="220" height="187" src="<?PHP echo ($f["idHome"]); ?>.<?php echo ($f["foto_h1"]);?>"></td>
<td width="11" rowspan="2" align="left" valign="top">&nbsp;</td>
<td width="221" valign="top"><img width="220" height="187" src="<?PHP echo ($f["idHome"]); ?>.<?php echo ($f["foto_h2"]);?>" /></td>
<td width="31" rowspan="2">&nbsp;</td>
</tr>
<tr>
<td width="242" valign="top" class="texto"><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="textobold">
<tr>
<td><?php echo ($f["titulo_h"]);?></td>
</tr>
</table>
<br />
<?php echo ($f["descripcion_corta"]);?></td>
<td width="11">&nbsp;</td>
<td height="187" valign="top" class="texto"><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="textobold">
<tr>
<td><?php echo ($f["titulo_h_2"]);?></td>
</tr>
</table>
<br />
<?php echo ($f["descripcion_corta_2"]);?></td>
<td width="221" valign="top" class="texto"><br />
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="textobold">
<tr>
<td><?php echo ($f["titulo_h_3"]);?></td>
</tr>
</table>
<br />
<?php echo ($f["descripcion_corta_3"]);?></td>
</tr>
<?PHP

}

?>
</table>
<img src="../imagenes/linea.jpg" width="780" height="2" /></td>
</tr>
<tr class="borde">
<td height="20" class="pie">&nbsp;&nbsp;Solydeus.org &copy; 2009. Todos los derechos reservados.</td>
<td height="20" align="right" class="arialgrispie"><a href="http://p-opuestos.com/">Dise&ntilde;o: PolosOpuestos&nbsp;&nbsp;&nbsp; </a></td>
</tr>
</table></td>
</tr>
</table>

<map name="Map10" id="Map10">
<area shape="rect" coords="2,1,149,182" href="../noticias_niño.htm" />
</map>
<map name="Map" id="Map"><area shape="rect" coords="1,3,114,119" href="../historia.htm" />
</map>
<map name="Map2" id="Map2"><area shape="rect" coords="3,4,117,120" href="../filosofia.htm" />
</map>
<map name="Map3" id="Map3"><area shape="rect" coords="5,3,119,119" href="../quienes_somos.htm" />
</map>
<map name="Map4" id="Map4"><area shape="rect" coords="2,3,116,120" href="../muestras.htm" />
</map>
<map name="Map5" id="Map5"><area shape="rect" coords="3,1,118,120" href="../empresas.htm" />
</map>
<map name="Map6" id="Map6"><area shape="rect" coords="4,4,117,120" href="../noticias.htm" />
</map>
</body>
</html>
FAQ relacionadas

Para ver más FAQ relacionadas accede a las categorías:

Volver al árbol de categoríasVolver al árbol de categorías