/** * 获取文字的描绘对象 * @param string $font 字体名称或字体路径 * @param integer $size 字体大小 * @param string | ImagickPixel $color 字颜色 * @param float $opacity 文字的透明度,取值范围0(全透明)-1(不透明) * @param string | ImagickPixel $underColor 字的背景颜色 * @return ImagickDraw | false */ public function getDrawForText($font = null, $size = 8, $color = 'transparent', $opacity = 0.58, $underColor = null) { $draw = new ImagickDraw(); // $draw->setGravity(Imagick::GRAVITY_CENTER); // 特别注意这里了,如果这里设置了文字水印的位置的话,那么在其写入别到文件时就会起作用,且其他设置的坐标都没有用 if ($font !== null) { if (is_file($font)) { $draw->setfont($font); } else { $this->_error = '字体文件不存在'; return false; } } $draw->setfontsize($size); $draw->setFillColor($color); $draw->setfillopacity($opacity); // 貌似和这个是一样的: $draw->setFillAlpha(0.5); if ($underColor !== null) { $draw->settextundercolor($underColor); } // $draw->settextalignment(2); //文字对齐方式,2为居中 return $draw; }
/** * * 文字水印 * @param unknown_type $data */ public function addWaterText($data) { $draw = new ImagickDraw(); $this->ImagickPixel = new ImagickPixel(); $draw->clear(); $draw->setfont($data['font']); $draw->setfontsize($data['size']); $this->ImagickPixel->setcolor($data['color']); $draw->setfillcolor($data['color']); $draw->setfillalpha($data['alpha']); $draw->settextalignment(imagick::GRAVITY_NORTHWEST); //左对齐 $draw->annotation($data['pos_x'], $data['pos_y'], $data['literal']); $this->srcImg_source->drawimage($draw); $draw->destroy(); return $this->srcImg_source; }