分享一个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);
- }
- }
- ?>
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);
- ?>
|