php 图片处理类(附实例)

WBOY
Freigeben: 2016-07-25 08:55:53
Original
1197 Leute haben es durchsucht
分享一个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: Imagick\n. 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); 
} 
} 
?>
Nach dem Login kopieren

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); 
?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage