Comunidad PHPeros

Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: Rodrinete en 19 de Junio de 2008, 11:24:42 am

Título: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Rodrinete en 19 de Junio de 2008, 11:24:42 am
Me ha parecido raro no encontrar este tutorial aquí, así que posteo el mío :D

Entendemos por Libería GD que es aquella que nos permite "manipular" imágenes, es decir, escribir una imagen sobre otra, poner una imagen sobre otra, colorear una imagen, etc...

1. Escribir en una imagen

 Primero hemos de ver si tenemos la librería GD activada, para ello creamos un archivo php que nos muestre la información:


<?
phpinfo();
?>


Hecho esto buscamos esta parte y miramos si la tenemos activada.

(http://b.imagehost.org/0149/gd.png)

En mi caso está activada y permite manipular con cualquier tipo de imagen.

Ahora tenemos que decidirnos sobre que tipo de imagen trataremos, jpeg, png, gif, etc...
Ya que la función para cargar la imagen depende del tipo:

 
$img = imagecreatefromgif("imagen"); //Sirve para cargar un .gif
$img = imagecreatefrompng("imagen"); //Sirve para cargar un .png
$img = imagecreatefromjpeg("imagen"); //Sirve para cargar un .jpeg


En mi caso usaré esta imagen:

(http://rodrinete.ro.funpic.org/galeria/imagen.gif)

Ahora el código para cargarla:


<?
$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
?>


Para determinar el color de la fuente debemos usar esta función y almacenarla en una variable:


$color = imagecolorallocate($variable_de_la_imagen,0,0,0); // Los colores van por escara RGB 0,0,0 = Negro 255,0,0 = Rojo....


En mi caso quedaría así:


<?
$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
?>


¿Cómo escribo en una imágen? Ahora has de usar esta función:


imagestring($variable_de_la_imagen,$tamano_del_1_al_5,$x,$y,$texto,$color_de_la_fuente);
// Donde pone $tamano_del_1_al_5 debemos poner un número del 1 al 5
// Para averiguar donde es X y donde es Y, abrimos un editor de imagenes (Paint)
// Y buscamos el punto donde queramos escribir, y miramos en la barra de abajo unos numeritos
// Numero1,Numero2 esos numeros corresponden a X y a Y


En mi caso lo pondré así:


<?
$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
imagestring($img,3,0,0,"Hola mundo",$negro); //Escribe Hola mundo en negro
imagestring($img,3,10,10,"Rodrinete",$rojo); //Escribe Rodrinete en rojo
?>


Ahora para mostrar la imagen y destruirla, tenemos que usar dos funciones:


//imageTIPO($variable_de_la_imagen);
// Para mostrar PNG: imagepng($variable_de_la_imagen);
// Para mostrar GIF: imagegif($variable_de_la_imagen);
// Para mostrar JPEG: imagejpeg($variable_de_la_imagen);
// Despues se usa: imagedestroy($variable_de_la_imagen);


En mi caso lo pondré así:


<?
$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
imagestring($img,3,0,0,"Hola mundo",$negro); //Escribe Hola mundo en negro
imagestring($img,3,10,10,"Rodrinete",$rojo); //Escribe Rodrinete en rojo
imagegif($img); //Muestra el nuevo GIF
imagedestroy($img); //Destruye el nuevo gif y lo vuelve a pasar a como estaba antes
?>


Hecho cuando nos metamos en nuestro PHP la imagen quedará así:

(http://rodrinete.ro.funpic.org/galeria/test.php)

Esta es la Parte1, próximamente la Parte2.

Saludos.
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: C-ChacK en 19 de Junio de 2008, 12:35:35 pm
Muy buena explicacion!!
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Kam[P]anO en 20 de Junio de 2008, 04:33:38 am
Y coomo se las coordenadas?
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: C-ChacK en 20 de Junio de 2008, 10:51:59 am
Las coordenadas son la X y la Y, de esa forma puedes situar el texto en el lugar exacto!!
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Rodrinete en 20 de Junio de 2008, 15:10:42 pm
Y coomo se las coordenadas?
Antes de subir la imagen a tu host, ábrela con el paint y pon el mouse encima del punto donde quieras escribir, fíjate abajo y veras dos númeritos separados por una coma, esa son las coordenadas X,Y
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: x.mara.x en 21 de Junio de 2008, 18:36:13 pm
o tambien pueden llegar a algo mas complicado de escribir el punto que elijas, hay un script que hizo naveda creo, que tiene como hagarar las coordenadas de un mouse, se pueden agarrar y luego esas ponerlas como la X y la Y de la imagen.
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Rodrinete en 21 de Junio de 2008, 23:43:01 pm
Es que naveda es una maquina, no una persona  xD a el no le hace falta buscar las coordenadas, sino que se las sabe ya xD
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Adidi en 23 de Junio de 2008, 20:48:32 pm
Muy bueno.
*ESPERANDO PARTE 2 CON ANSIA  ;D ;D ;D ;D*
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Kam[P]anO en 29 de Junio de 2008, 06:28:50 am
¿Que pasa con esto?

<?
if(isset($_POST['ok'])){
$nick = $_POST['nick'];
$texto = $_POST['texto'];
$foro = $_POST['foro'];

$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
imagestring($img,74,27,0,$nick,$negro); //Escribe Hola mundo en negro
//imagestring($img,3,10,10,$texto,$rojo); //Escribe Rodrinete en rojo
imagegif($img); //Muestra el nuevo GIF
imagedestroy($img); //Destruye el nuevo gif y lo vuelve a pasar a como estaba antes

} else {
?>
<form method="POST" action="GDTest.php">
<b>Nick</b>:
<br><input type="text" name="nick">
<br><b>Texto</b>:
<br><input type="text" name="texto">
<br><b>Foro</b>:
<br><input type="text" name="foro"> <br>
<input type="submit" name="ok" value="OK!">
</form>

<?
}
?>

 Me da lo siguiente:
Citar
GIF89aDi?ç?????ÿ???€?€€???€€?€?€€€€€ÀÀÀÿ???ÿ?ÿÿ???ÿÿ?ÿ?ÿÿÿÿÿ?????????????????????????????????????????????????????????????????????????????3??f??™??Ì??ÿ?3??33?3f?3™?3Ì?3ÿ?f??f3?ff?f™?fÌ?fÿ?™??™3?™f?™™?™Ì?™ÿ?Ì??Ì3?Ìf?Ì™?ÌÌ?Ìÿ?ÿ??ÿ3?ÿf?ÿ™?ÿÌ?ÿÿ3??3?33?f3?™3?Ì3?ÿ33?33333f33™33Ì33ÿ3f?3f33ff3f™3fÌ3fÿ3™?3™33™f3™™3™Ì3™ÿ3Ì?3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ?3ÿ33ÿf3ÿ™3ÿÌ3ÿÿf??f?3f?ff?™f?Ìf?ÿf3?f33f3ff3™f3Ìf3ÿff?ff3fffff™ffÌffÿf™?f™3f™ff™™f™Ìf™ÿfÌ?fÌ3fÌffÌ™fÌÌfÌÿfÿ?fÿ3fÿffÿ™fÿÌfÿÿ™??™?3™?f™?™™?Ì™?ÿ™3?™33™3f™3™™3Ì™3ÿ™f?™f3™ff™f™™fÌ™fÿ™™?™™3™™f™™™™™Ì™™ÿ™Ì?™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ?™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌ??Ì?3Ì?fÌ?™Ì?ÌÌ?ÿÌ3?Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌf?Ìf3ÌffÌf™ÌfÌÌfÿÌ™?Ì™3Ì™fÌ™™Ì™ÌÌ™ÿÌÌ?ÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿ?Ìÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿ??ÿ?3ÿ?fÿ?™ÿ?Ìÿ?ÿÿ3?ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿf?ÿf3ÿffÿf™ÿfÌÿfÿÿ™?ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌ?ÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿ?ÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ!ù???,????Di??þ?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\É2!??_¶œI³¦Í›e Ô‰³§ÏŸ@oê䴨ѣH3Ê$ºóåÐKaB…é´ Ó¡T™^Mʵ«W‡[­JJ6êT©<ÓfE;ë×·p¿†u™µl݁L›’Å{WoÜ¿€šyÕ¬á±{ ÖK4oàǐQºõ˸îb»„÷Vι³g‰þì 8dpŠÛ8'nû²ØËm‡ÙR®ÚX¶æÏ¸s#ô§ ŽÒ§ÅrÞúÞË[‡ÏNΗ¯cÝÐq‡F¡"5AÓ¨+š®nðyôïà)þú…btAìïÁAÑèá;ê·º#O¿þÃé¾ÏŸ¶~‰y‡ÅPg}oå¥ß@è Ô{ÁŸV¨håqqÝ~õãim7 …$V8^y(Ü0`ƒ½§Â‚%ÆXàt6À‘B, rHQ€ÜÉèc}â@ bäƒE¾øã’àMwƒ=:bÇ߇Iˆ"ŠE $¢@*ȤE^™ß—+ˆC?ëµ÷‹êAøšb&ˆã?.ÆçodRdå•7ä©’“ÿØçš:>b)¨ù=þ©ÉcjP&êgE¼Á0â¤&ù&ܱ٨ƒ6Âè¡›IÆ×Û ÿœ˜¦ i²jDþËôÈjD¢õ‰`{RvHå?ˆ*ʨ›"&9 ‚–ΪP¥—†(«± ™©eŠ„ ª›ˆŠº«‹¶ô¢@ªÈlBšx+Q¬0~» ¼rzK®éþ×kB< 1+3š~4¡&¾©Ú‘o¨Ò˯þ@P‚Þ§¼ ŒP’µ¬75Ú)<yW^=$ªtwuÖH×J?¯:ê¡"+ \u["žòÊ^‹6ŠF®8Þ(ï\¥ßA‡ì¥®ÿÕ‰ùÁ¢´µ@nDäJZ=åw½¨§»Ûù@¿:* ¡Jæ>PÎ^“Î|~Œ¹Ý©±^|oxÔÛÕ -ø¦¤N(¶ª'«8ïâ:-<1`ŽgäL¾Þ–ë—<ˆ·‹ÓžÕ#òp‡Xí3õl¶m`W,èÄ„3µq<û ùÒļ8¡àpu¢]‘º•@cí®](" ¹Þ‡>ÁÉbþÁ˜@N(½Úð†8Ì¡wÈÃúð‡þ@ ¢‡HÄ"ñˆHL¢—ÈÄ&:ñ‰PŒ¢§HÅ*ZñŠXÌ¢·ÈÅ.zñ‹` £ÇHÆ2šñŒhLc}z#ÀŒ©Q‡ çÞ¸ÃSÑ‘ˆ{»cí¨Ç 汏>ä# }øÇAÖZ†ìa!‰CA'NGÇÊ9‘@B~%G¾yPRœÙ0I6Š OPŠ^àÜÔ7(H=^J%ŒÚ4GRF'ާœßóBöYÊÎa»l×¶Dó*[~Æ‘ñ%/Õ$ɱÅG™íRûŒ)M¤™ÂôdôÞ…Íõ‰ÆzÔŒ 2;¨JZj3_Ð4g8oiMƒtsWÐ$È;ÿ³NèŒS›³¤6“y¶òÕ:‹œ¤¬ÄÏ× tWÿÌÍ=ÕO2tY䜥Cú™€ÎDÕåAéIQÏ,4ú &?Ë ¸ŽvÆ¢Á$èÙä™R„šTœˆ4H:šJt6ÔM/… J7ŠÑ•ta»šÎÕrú–…^L” Úç@Žz¥ÙM“¨_ (¡ Q’Yrzß,!T·ÊÕ®zõ«` «XÇJÖ²šõ¬hM«Z×ÊÖ¶†1 ?;


(tengo las librerias GD activadas)

EDIT: 1 error arreglado, era esto:

imagestring($img,74,27,0,$nick,$negro); //Escribe Hola mundo en negro


esque no había entendido bien la sintaxis..

ahora sigo con error:

Citar
GIF89aDi?ç?????ÿ???€?€€???€€?€?€€€€€ÀÀÀÿ???ÿ?ÿÿ???ÿÿ?ÿ?ÿÿÿÿÿ?????????????????????????????????????????????????????????????????????????????3??f??™??Ì??ÿ?3??33?3f?3™?3Ì?3ÿ?f??f3?ff?f™?fÌ?fÿ?™??™3?™f?™™?™Ì?™ÿ?Ì??Ì3?Ìf?Ì™?ÌÌ?Ìÿ?ÿ??ÿ3?ÿf?ÿ™?ÿÌ?ÿÿ3??3?33?f3?™3?Ì3?ÿ33?33333f33™33Ì33ÿ3f?3f33ff3f™3fÌ3fÿ3™?3™33™f3™™3™Ì3™ÿ3Ì?3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ?3ÿ33ÿf3ÿ™3ÿÌ3ÿÿf??f?3f?ff?™f?Ìf?ÿf3?f33f3ff3™f3Ìf3ÿff?ff3fffff™ffÌffÿf™?f™3f™ff™™f™Ìf™ÿfÌ?fÌ3fÌffÌ™fÌÌfÌÿfÿ?fÿ3fÿffÿ™fÿÌfÿÿ™??™?3™?f™?™™?Ì™?ÿ™3?™33™3f™3™™3Ì™3ÿ™f?™f3™ff™f™™fÌ™fÿ™™?™™3™™f™™™™™Ì™™ÿ™Ì?™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ?™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌ??Ì?3Ì?fÌ?™Ì?ÌÌ?ÿÌ3?Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌf?Ìf3ÌffÌf™ÌfÌÌfÿÌ™?Ì™3Ì™fÌ™™Ì™ÌÌ™ÿÌÌ?ÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿ?Ìÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿ??ÿ?3ÿ?fÿ?™ÿ?Ìÿ?ÿÿ3?ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿf?ÿf3ÿffÿf™ÿfÌÿfÿÿ™?ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌ?ÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿ?ÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ!ù???,????Di??þ?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJu ?;(\†"ƶŠÅP¨øZµ¬Yþ4¡À±µ«ExboKWâU±drõZ‘ëØº€'ô EÖ‚{Þƒƒ¢ÑÃwqKž|w-â®dï19ì0ìßÉ ë¦5œB®^·57~W…éаÍb5Ì…à^²ý6kuè7oìßQ Fq#o⊐]_õ® 8)bæKѳoæØ‘ŽÆA …˜éo#þgôî {˜ÞN­{ Üáÿ«Ç+0liò÷Œ¿¤pý0æØ?Çý³Øjÿ¸iÒý“œ\ ²ÕŸCïÁwÄ$™÷OX˜ží˜Â€ÿسـ֕ˆÂˆ>” ×µøÑv 2ñWª ¸Ø}å†`kr©Õá?ÂQ'cAš Ñ2Ÿ¹VŽæØz5r¦‹™ˆ`o­å5ŒNôbŒ 1If˜V&!Wâ( {<*H·#þŒ暏¤}Ú"¡ÿÀá!*šW²ž ??0'é|ð±•Öª M¬x;\mÇNøŸUp¨Ðj¾)¢­%7ª|‹]ŸyB11ôÎXš0Û¬\iµ+&¢{+”uguˆÂ¹hA>J‘¹ËUK ˜ÿ¨ûU€~41 ¥Wñ•֐G^šåpö‚ˆàŽà ÔZ-ŒÉ[Â([ì?榬ò@*¯óÊ,¿¼Ó©_ÇÝ I±º|J&¿Øþ‹[¯L`yPo½•[,µ¤Ç»)lARgÞ»æ˜s¾uß:á,¸ŸìŠCÜkþEXÇø*N\[Žç-|ÑÍ÷YaΫ5úBÄO-<ïww¾7Í8U+­ÑqO™=°c­µš|ŸÙi–¶·*.hòƒ=ÚÌwò´»Œ€Î)óØp´¨ÁáB šÕfju/?•J)¼ 7ÈÁzðƒ ¡GHšð„(L¡ WȺð…0Œ¡ gHÃÚð†8Ì¡wÈÃúð‡þ@ ¢‡HÄ"ñˆHL¢—ÈÄ&ÞlA+²œ98š)mŠ"U¨±-žP‹^ƒâÜàh–7–h‚ûÁz¬è-’tQË‚$„åt AƒŒ"ÈTäÈn!‘e©â~$dGöp¦‘¦ñU'q7¬( “M‘#ã%»;~æJr¥b8E¤Âœ•Jñã(FÉPBΕ¨ Ñ]ì‡K¥¨rc•T2É$ËG¬˜OÑ%}<¹›f‚j𤄿TŽÙËYþ›¤c%-µÙ×!d—!²æÙ°ÉKrB…›ÖT&%™ÉJþ¹³)Òl/Õév†èžœÞAâIËQ†3™ãèRòÌO¬Ÿúü§B—ÏzBœ«L¦='ªs­ä:#Ê™»tŒ£Cá&­iƒd¥Ø3îP:?zˆŽ ™ü C®a¦@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT?;

El code de ahora:


<?
if(isset($_POST['ok'])){
$nick = $_POST['nick'];
$texto = $_POST['texto'];
$foro = $_POST['foro'];

$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
imagestring($img,3,74,27,$nick,$negro); //Escribe Hola mundo en negro
//imagestring($img,3,10,10,$texto,$rojo); //Escribe Rodrinete en rojo
imagegif($img); //Muestra el nuevo GIF
imagedestroy($img); //Destruye el nuevo gif y lo vuelve a pasar a como estaba antes
echo"<br><br><br><hr>$nick $texto $foro";

} else {
?>
<form method="POST" action="GDTest.php">
<b>Nick</b>:
<br><input type="text" name="nick">
<br><b>Texto</b>:
<br><input type="text" name="texto">
<br><b>Foro</b>:
<br><input type="text" name="foro"> <br>
<input type="submit" name="ok" value="OK!">
</form>

<?
}
?>


Saludos
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: CarlosRdrz en 29 de Junio de 2008, 10:57:42 am
Añade:
header("Content-type: image/gif");

Antes de imagegif($img);

Saludos
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: x.mara.x en 29 de Junio de 2008, 16:40:25 pm
Es que naveda es una maquina, no una persona  xD a el no le hace falta buscar las coordenadas, sino que se las sabe ya xD

U_U WOOOOW
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: Kam[P]anO en 29 de Junio de 2008, 21:19:15 pm
Añade:
header("Content-type: image/gif");

Antes de imagegif($img);

Saludos

Me lo había dicho kuki... un ¿Amigo?... pero gracias ;)
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: davidruben en 17 de Julio de 2008, 23:06:34 pm
Se puede poner el tipo de letra?
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: westwest en 18 de Julio de 2008, 12:49:07 pm
se podia usar imagefttext...
imagefttext($img, 7, 0, 8, 25, $col2, FUENTE, TEXTO);
no me preguntes k es $col2 por k lo sake de un codigo de radio con libreria GD de TLX xD, pero siempre puedes buscar en es.php.net
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: FeDe en 19 de Julio de 2008, 02:53:39 am
Buenas,

$col2 es el color de fuente...

Ese script lo hicimos naveda y yo jejeje

Un saludo.
Título: Re: [Tutorial] Utilizando las librerías GD [Parte 1]
Publicado por: x.mara.x en 20 de Septiembre de 2008, 20:54:08 pm
se puede hacer asi?
<?
$img = imagecreatefromgif("imagen.gif"); //Crea la imagen
$negro = imagecolorallocate($img,0,0,0); //Color Negro
$rojo = imagecolorallocate($img,255,0,0); //Color Rojo
$nick= imagestring($img,3,0,0,"el nick",$negro); //Escribe Hola mundo en negro
$texto = imagestring($img,3,10,10,"el texto",$rojo); //Escribe Rodrinete en rojo
?>

pero luego como se mostraria completamente?