International PHP Conference Berlin 2021

Creación de un PNG con PHP

Ejemplo #1 Creación de un PNG con PHP

<?php

header
("Content-type: image/png");
$cadena $_GET['texto'];
$im     imagecreatefrompng("images/boton1.png");
$naranja imagecolorallocate($im22021060);
$px     = (imagesx($im) - 7.5 strlen($cadena)) / 2;
imagestring($im3$px9$cadena$naranja);
imagepng($im);
imagedestroy($im);

?>
Este ejemplo sería llamado desde una página con una etiqueta como: <img src="button.php?texto=texto">. El script boton.php de arriba toma esta cadena de "texto" y la sobrepone en la parte superior de una imagen, que en este caso es "images/boton1.png", e imprime la imagen resultante. Esta es una manera muy conveniente de evitar tener que dibujar nuevas imágenes de botones cada vez que se quiera cambiar el texto de un botón. Con este método las imágenes de botones se generan dinámicamente.

add a note add a note

User Contributed Notes 1 note

up
6
viishalkumarsahu at gmail dot com
4 years ago
Function to create random png images when requested for example...
<img src="create_image.php?s=008080_F_1000_200&t=Sample%20Image%20Drawn%20By%20PHP" alt="GD Library Example Image" >

here is create_image.php
<?php
$setting
= isset($_GET['s']) ? $_GET['s'] : "FFF_111_100_100";
$setting = explode("_",$setting );
$img = array();

switch (
$n = count($setting)) {
    case
$n > 4 :
    case
3:
       
$setting[3] = $setting[2];
    case
4:
       
$img['width'] = (int) $setting[2];
       
$img['height'] = (int) $setting[3];
    case
2:
       
$img['color'] = $setting[1];
       
$img['background'] = $setting[0];
        break;
    default:
        list(
$img['background'],$img['color'],$img['width'],$img['height']) = array('F','0',100,100);
        break;
}

$background = explode(",",hex2rgb($img['background']));
$color = explode(",",hex2rgb($img['color']));
$width = empty($img['width']) ? 100 : $img['width'];
$height = empty($img['height']) ? 100 : $img['height'];
$string = (string) isset($_GET['t']) ? $_GET['t'] : $width ."x". $height;

header("Content-Type: image/png");
$image = @imagecreate($width, $height)
    or die(
"Cannot Initialize new GD image stream");

$background_color = imagecolorallocate($image, $background[0], $background[1], $background[2]);
$text_color = imagecolorallocate($image, $color[0], $color[1], $color[2]);

imagestring($image, 5, 5, 5, $string, $text_color);
imagepng($image);
imagedestroy($image);

function
hex2rgb($hex) {
   
// Copied
  
$hex = str_replace("#", "", $hex);

   switch (
strlen($hex)) {
       case
1:
          
$hex = $hex.$hex;
       case
2:
         
$r = hexdec($hex);
         
$g = hexdec($hex);
         
$b = hexdec($hex);
           break;

       case
3:
         
$r = hexdec(substr($hex,0,1).substr($hex,0,1));
         
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
         
$b = hexdec(substr($hex,2,1).substr($hex,2,1));
           break;

       default:
         
$r = hexdec(substr($hex,0,2));
         
$g = hexdec(substr($hex,2,2));
         
$b = hexdec(substr($hex,4,2));
           break;
   }

  
$rgb = array($r, $g, $b);
   return
implode(",", $rgb);
}
To Top