Pages

How to Convert Text to GIF


Snippet Name: Text to GIF
Description: Slick method of changing text to an image- useful to prevent copying text easily.



<?php
 
// To draw the GIF - call this script with a URL like the following:
// text_gif.php?msg=testing+class&rot=15&size=48&font=fonts/TIMES.TTF
 
Header("Content-type: image/gif");
 
class textGIF {
 var $font = 'fonts/TIMES.TTF'; //default font. directory relative to script directory.
 var $msg = "undefined"; // default text to display.
 var $size = 24;
 var $rot = 0; // rotation in degrees.
 var $pad = 0; // padding.
 var $transparent = 1; // transparency set to on.
 var $red = 0; // white text...
 var $grn = 0;
 var $blu = 0;
 var $bg_red = 255; // on black background.
 var $bg_grn = 255;
 var $bg_blu = 255;
 
function draw() {
 $width = 0;
 $height = 0;
 $offset_x = 0;
 $offset_y = 0;
 $bounds = array();
 $image = "";
 
 // determine font height.
 $bounds = ImageTTFBBox($this->size, $this->rot, $this->font, "W");
 if ($this->rot < 0) {
  $font_height = abs($bounds[7]-$bounds[1]);  
 } else if ($this->rot > 0) {
  $font_height = abs($bounds[1]-$bounds[7]);
 } else {
  $font_height = abs($bounds[7]-$bounds[1]);
 }
 
 // determine bounding box.
 $bounds = ImageTTFBBox($this->size, $this->rot, $this->font, $this->msg);
 if ($this->rot < 0) {
  $width = abs($bounds[4]-$bounds[0]);
  $height = abs($bounds[3]-$bounds[7]);
  $offset_y = $font_height;
  $offset_x = 0;
 
 } else if ($this->rot > 0) {
  $width = abs($bounds[2]-$bounds[6]);
  $height = abs($bounds[1]-$bounds[5]);
  $offset_y = abs($bounds[7]-$bounds[5])+$font_height;
  $offset_x = abs($bounds[0]-$bounds[6]);
 
 } else {
  $width = abs($bounds[4]-$bounds[6]);
  $height = abs($bounds[7]-$bounds[1]);
  $offset_y = $font_height;;
  $offset_x = 0;
 }
 
 $image = imagecreate($width+($this->pad*2)+1,$height+($this->pad*2)+1);
 
 $background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu);
 $foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu);
 
 if ($this->transparent) ImageColorTransparent($image, $background);
 ImageInterlace($image, false);
 
 // render it.
 ImageTTFText($image, $this->size, $this->rot, $offset_x+$this->pad, $offset_y+$this->pad, $foreground, $this->font, $this->msg);
 
 // output GIF object.
 imageGIF($image);
}
}
 
$text = new textGIF;
 
if (isset($msg)) $text->msg = $msg; // text to display
if (isset($font)) $text->font = $font; // font to use (include directory if needed).
if (isset($size)) $text->size = $size; // size in points
if (isset($rot)) $text->rot = $rot; // rotation
if (isset($pad)) $text->pad = $pad; // padding in pixels around text.
if (isset($red)) $text->red = $red; // text color
if (isset($grn)) $text->grn = $grn; // ..
if (isset($blu)) $text->blu = $blu; // ..
if (isset($bg_red)) $text->bg_red = $bg_red; // background color.
if (isset($bg_grn)) $text->bg_grn = $bg_grn; // ..
if (isset($bg_blu)) $text->bg_blu = $bg_blu; // ..
if (isset($tr)) $text->transparent = $tr; // transparency flag (boolean).
 
$text->draw();
 
?>

1 comment:

  1. This sounds really slick! Not that I'm an expert and worry about my code being stolen - but it would help to hide things I really don't care to have the public have access to.
    Thanks! Will have to test it out. Especially changing the text color to the same as the background to make it EVEN MORE difficult to get code!

    ReplyDelete