Создание PNG средствами PHP

Пример #1 Создание PNG средствами PHP

<?php

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

?>
Этот пример можно было бы вызвать на странице с тегом: <img src="button.php?text=text">. Выше скрипт button.php возьмет строку "text" и наложит её поверх базового изображения, которое явлется, в данном случае "images/button1.png" и выведет конечное изображение. Это очень удобный способ, чтобы избежать необходимости создания новой кнопки всякий раз, когда вы хотите изменить текст кнопки. С помощью этого метода она генерируются динамически.

Коментарии

Автор:
Keep in mind that transparency is not preserved when doing what is shown in Example #1 to a PNG with transparency.
2015-03-31 00:59:39
http://php5.kiev.ua/manual/ru/image.examples-png.html
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 :
    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($image555$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); 
}
2016-12-16 23:24:46
http://php5.kiev.ua/manual/ru/image.examples-png.html
I had to use ob_start / ob_clean for this to work, like below part of the coding:

<?php
ob_start
();
imagepng($image);
$contents ob_get_contents();
ob_end_clean();
imagedestroy($image);

ob_clean();
header('Content-Type: image/png');
echo 
$contents;
2019-05-07 10:19:16
http://php5.kiev.ua/manual/ru/image.examples-png.html

    Поддержать сайт на родительском проекте КГБ