php 图片处理类(附实例)

发布时间:2019-11-19编辑:脚本学堂
分享一个php实现的图片处理类,可以设置文字水印与图片水印等,有需要的朋友参考下。

本节分享一个图片处理类,简单实现了文字水印与图片水印,是学习php图片操作的小例子。

代码:

<?php 
class ImageModifier { 
/** 
 *  实现在图片上保存文本信息 
 * 
 *  default is array() 
 * 
 *  @access private 
 */ 
var $aTextData = array(); 

/** 
 *  保存文本信息到图片上 
 * 
 *  default is array() 
 * 
 *  @access private 
 */ 
var $aImageData = array(); 

/** 
 *  imagick的资源标识符
 * 
 *  default is FALSE 
 * 
 *  @access private 
 */ 
var $image = ""; 

/** 
 *  错误消息级别 
 * 
 *  default is 0 
 * 
 *  @varinteger 
 */ 
var $sError = 0; 


   /** 
 *  构造函数
 *   
 *  @param  string  $tplImage   template image 
 *  @access private 
 */ 
public function __construct($tplImage) { 

// Check Imagick class exist or not if not show error. 
if (!class_exists("Imagick", false)) { 
exit("Unable to load class: Imagickn. Imagick Image Library Missing."); 
} 
// create a object of Imagick template image 
$this->image = new Imagick($tplImage); 
} 

/** 
 *  设置文本属性  
 * 
 *  @param  string  $sText  text to print on the image (i.e. Buy 1 Get 1 Free ) 
 *  @param  integer  $x text to print from x codinates   
 *  @param  integer  $y text to print from y codinates 
 *  @param  integer  $font  text size for printing   
 *  @param  string  $color  text color for print   
 *  @param  integer  $text_anglerotate text from 0-360   
 *  @param  string  $font_style installed font name and path (i.e /usr/share/fonts/liberation/LiberationSans-Italic.ttf) 
 *  @Creating an array of text properties 
 */ 

public function setText($sText, $x = 0, $y = 0, $font = 12, $color = 'black', $text_angle = 0, $font_style = './LiberationSans-Italic.ttf') { 
$this->aTextData[] = array("text"=>$sText, "font_color"=>$color, "font_size"=>$font,"x"=>$x,"y"=>$y, "font_style"=>$font_style, 
"text_angle"=>$text_angle); 
} 

/** 
 *  设置图片属性
 * 
 *  @param  string  $sImage text to print on the image (i.e. /home/httpd/images/brand.jpg ) 
 *  @param  integer  $x text to print from x codinates   
 *  @param  integer  $y text to print from y codinates 
 *  @param  integer  $text_anglerotate text from 0-180   
 *  @Creating an array of image properties 
 */ 

public function setImage($sImage, $x = 0, $y = 0, $angle=0) { 
$this->aImageData[] = array("image"=>$sImage, "x"=>$x, "y"=>$y, "angle"=>$angle); 
} 

/** 
 *  从文字和图片属性生成最终图像 
 * 
 *  @param  string  $sImage Output image Name 
 *  @return boolean returns TRUE on success and FALSE upon failure 
 */ 

public function generateImage($sImage) { 
foreach ($this->aImageData as $aImageValue) { 
if (!trim($aImageValue["image"])) { 
$sError = 1; 
break; 
} 
$oImg = new Imagick($aImageValue["image"]); 
$oImg->rotateImage("transparent", $aImageValue["angle"]); 
$this->image->compositeImage($oImg, $oImg->getImageCompose(), $aImageValue["x"], $aImageValue["y"]); 
unset($oImg); 
} 
foreach ($this->aTextData as $aTextValue){ 
if (!trim($aTextValue['text'])) { 
$sError = 2; 
break; 
} 
$oDraw = new ImagickDraw(); 
$oDraw->setFont($aTextValue['font_style']); 
$oDraw->setFontSize($aTextValue['font_size']); 
$oDraw->setFillColor($aTextValue['font_color']); 
$this->image->annotateImage($oDraw, $aTextValue['x'], $aTextValue['y'], $aTextValue['text_angle'], $aTextValue['text']); 
unset($oDraw); 
} 
if ($sError == 1) { 
exit("Unable to generate Image. Check "setImage" Properties"); 
}elseif ($sError == 2) { 
exit("Unable to generate Image. Check "setText" Properties"); 
} 
$this->image->setImageFormat("jpg"); 
return $this->image->writeImage($sImage); 
} 
} 
?>

2,调用示例:

<?php 
//调用类文件
require_once "ImageModifier.class.php"; 

//示例
$oImageMagick = new ImageModifier('template.jpg'); // Image Template on which you have to manupulate 
$oImageMagick->setText("This is one", 350, 20, 22, "red"); 
$oImageMagick->setText("This is Two", 50, 50, 25, "blue","50"); 

$oImageMagick->setImage("brand.jpg", 160, 90, 0); 
$oImageMagick->setImage("tata.jpg", 160, 20); 

$newImagename = "mynewImage.jpg"; 
$oImageMagick->generateImage($newImagename); 
?>