topical media & game development

talk show tell print

graphic-php-litestamp.php / php



  <?php
  // NOTE: class is experimental
  // Copyright (c) 2006, Simon Jansson <http://www.litewebsite.com> all rights reserved.
  // License <http://litewebsite.com/license_BSD.html>
  
  //liteStamp::GDversion();
  //stamp = new LiteStamp('originalImage.jpg', 'stampImage.jpg', 'stamp_');
  //stamp->stampPicture();
  
  class LiteStamp{
  
          // class variables
          private fileHandle = null;
          private newPictureName = null;
          private pictureInfo = null;
          private pictureName = null;
          private prefix = null;
          private stampInfo = null;
          private stampName = null;
          private stampXpos = null;
          private stampYpos = null;
  
          function __construct(picture, stamp, prefix = 'stamp_'){
  
                  this->pictureName = picture; // original picture to place stamp/watermark on
                  this->stampName = stamp; // stamp/watermark picture
                  this->prefix = prefix; // prefix of new stamped picture
  
          }// end of construct
  
          public static function GDversion(){
  
                  // GD 2.0.28 or newer is recommended version to use
                  // http://www.php.net/manual/en/function.gd-info.php
                  var_dump(gd_info()); // dump information about your GD version
  
          return true;
          }// end of GDversion
  
          
  
          private function openImage(fileName, type){
  
                  // open picture with correct image function. Add more types if needed.
                  // GIF: http://php.net/manual/en/function.imagecreatefromgif.php
                  // JPG/JPEG: http://php.net/manual/en/function.imagecreatefromjpeg.php
                  // PNG: http://php.net/manual/en/function.imagecreatefrompng.php
                  switch (type){
  
                  case 1: // GIF
                          this->fileHandle = imagecreatefromgif(fileName);
                          break;// case 1
  
                  case 2: // JPG/JPEG
                          this->fileHandle = imagecreatefromjpeg(fileName);
                          break;// case 2
  
                  case 3: // PNG
                          this->fileHandle = imagecreatefrompng(fileName);
                          break;// case 3
  
                  default:
                          die('Unsupported filetype: '.fileName);
                  }
  
          return this->fileHandle;
          }// end of openImage
  
          public function stampPicture(){
  
                  // get picture info such as width, height and extension
                  // http://php.net/manual/en/function.getimagesize.php
                  this->pictureInfo = getimagesize(this->pictureName) or die('Error getting picture info. Double check file path.');
                  this->stampInfo = getimagesize(this->stampName) or die('Error getting stamp info. Double check file path.');
  
                  // open images with class method openImage()
                  this->pictureFile = this->openImage(this->pictureName, this->pictureInfo[2]);
                  this->stampFile = this->openImage(this->stampName, this->stampInfo[2]);
  
                  // position the stamp in the lower right corner
                  this->stampXpos = this->pictureInfo[0] - this->stampInfo[0] - 15; // width - width - margin
                  this->stampYpos = this->pictureInfo[1] - this->stampInfo[1] - 15; // height - height - margin
  
                  // set a new name for the stamped picture and keep the original picture intact
                  this->newPictureName = this->prefix.this->pictureName;
  
                  // alpha blending: http://php.net/manual/en/function.imagealphablending.php
                  imagealphablending(this->pictureFile, true);
  
                  // merge the two images: http://php.net/manual/en/function.imagecopymerge.php
                  imagecopymerge(this->pictureFile, this->stampFile, this->stampXpos, this->stampYpos, 0, 0, this->stampInfo[0], this->stampInfo[1], 100);
  
                  // output the stamped image as GIF, JPG/JPEG or PNG. Add more types if needed.
                  // default type is the same as the original file
                  // GIF: http://php.net/manual/en/function.imagegif.php
                  // JPG/JPEG: http://php.net/manual/en/function.imagejpeg.php
                  // PNG: http://php.net/manual/en/function.imagepng.php
                  switch (this->pictureInfo[2]){
  
                  case 1: // GIF
                          imagegif(this->pictureFile, this->newPictureName);
                          break;// case 1
  
                  case 2:// JPG/JPEG
                          imagejpeg(this->pictureFile, this->newPictureName);
                          break;// case 2
  
                  case 3: // PNG
                          imagepng(this->pictureFile, this->newPictureName);
                          break;// case 3
  
                  default:
                          die('Unsupported filetype: '.fileName);
  
              }
          //echo 'finished';
  
          return true;
          }// end of stampPicture
  
          function destruct(){
                  unset(fileHandle, newPictureName, pictureInfo, pictureName, prefix, stampInfo, stampName, stampXpos, stampYpos);
          }// end of destruct
  
  }// end of class
  ?>
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.