欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 图片处理类(附实例)

程序员文章站 2022-05-10 08:08:19
...
分享一个php实现的图片处理类,可以设置文字水印与图片水印等,有需要的朋友参考下。

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

代码:

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,调用示例:

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); 
?>