5

I have seen in a couple of cases when sites generate image based on text/data input. How that can be achieved with PHP?

T.Todua
  • 53,146
  • 19
  • 236
  • 237
OrangeRind
  • 4,798
  • 13
  • 45
  • 57

5 Answers5

5

I believe libGD is one of the most popular alternatives for generating images (and it has bindings for most languages used in web development).

See the documentation on PHP.net. I guess you are especially interested in imagettftext.

pafcu
  • 7,808
  • 12
  • 42
  • 55
4

Another option: try imagick

jrharshath
  • 25,975
  • 33
  • 97
  • 127
3

Working Solution:

( at first, you need to ensure, that the hosting has enabled GD library: in any php file, execute phpinfo(); and in output check if GD library is enabled) .

Solution 1 (auto-sized output):

TextToImage_my( $text='Helloooo! my unicode words:  ǩ Ƥ Ў  ض ط  Ⴓ ');
    // ==== other parameters can be used too, see the function arguments below

function code: text-to-image.php


Solution 2 (manual-sized output):

(needs to have manual width&height of output, longer strings are cut out)..

<?php
$text = "YOUR  texttttttttttttttt";

$my_img = imagecreate( 200, 80 );                             //width & height
$background  = imagecolorallocate( $my_img, 0,   0,   255 );
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
$line_colour = imagecolorallocate( $my_img, 128, 255, 0 );
imagestring( $my_img, 4, 30, 25, $text, $text_colour );
imagesetthickness ( $my_img, 5 );
imageline( $my_img, 30, 45, 165, 45, $line_colour );

header( "Content-type: image/png" );
imagepng( $my_img );
imagecolordeallocate( $line_color );
imagecolordeallocate( $text_color );
imagecolordeallocate( $background );
imagedestroy( $my_img );
?> 
T.Todua
  • 53,146
  • 19
  • 236
  • 237
2

Using gd or other such libraries (or libraries built on top of gd).

Amber
  • 507,862
  • 82
  • 626
  • 550
1

The PHP GD extension allows text to be overlaid on an image.

In fact, you don't need an image in the first place, you can generate an image containing just the text.

I've used it for buttons.

pavium
  • 14,808
  • 4
  • 33
  • 50