Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado 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.
-
Muy buena explicacion!!
-
Y coomo se las coordenadas?
-
Las coordenadas son la X y la Y, de esa forma puedes situar el texto en el lugar exacto!!
-
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
-
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.
-
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
-
Muy bueno.
*ESPERANDO PARTE 2 CON ANSIA ;D ;D ;D ;D*
-
¿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:
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‡[JJ6ê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^=$ªtwuÖ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:
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£JJu ?;(\†"ƶŠÅP¨øZµ¬Yþ4¡À±µ«ExboKWâ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ª|‹]ŸyB11ôÎ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
-
Añade:
header("Content-type: image/gif");
Antes de imagegif($img);
Saludos
-
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
-
Añade:
header("Content-type: image/gif");
Antes de imagegif($img);
Saludos
Me lo había dicho kuki... un ¿Amigo?... pero gracias ;)
-
Se puede poner el tipo de letra?
-
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
-
Buenas,
$col2 es el color de fuente...
Ese script lo hicimos naveda y yo jejeje
Un saludo.
-
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?