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 3 notes

up
7
viishalkumarsahu at gmail dot com
4 months 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);
}
up
-48
Anonymous
1 year ago
too low too hard for use !

    $fontsize = mt_rand(18,23);
    //mt_rand(6,9): F5刷新会抖动!
    //$fontsize = 9;
up
-114
Jeff
2 years ago
Keep in mind that transparency is not preserved when doing what is shown in Example #1 to a PNG with transparency.
To Top