<?php
/**
* gif图片上添加水印 或者图片
* lianghuiju@chuchujie.com
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class CI_Imageick
{
/**
* 生成新的图片地址
* @param $image_name
* @param string $string
* @param int $fontSize
* @param string $color
* @param string $x_width
* @param string $y_height
* @return bool|string
* author :lianghuiju@chuchujie.com
* function_name : setNewImageick
* datetime : 2018/8/20
* description :
*/
public function setNewImageick($image_name, $string="",$fontSize=30, $color="#ffffff", $x_width="30", $y_height="40") {
if(empty($image_name) || $string == ""){
return false;
}
$image = new Imagick($image_name);
$animation = new Imagick();
$animation->setFormat("gif");
$image = $image->coalesceImages();
$unitl = $image->getNumberImages();
for ($i = 0; $i < $unitl; $i++) {
$image->setIteratorIndex($i);
$thisimage = new Imagick();
//TODO 注意哦: ImageMagick版本必须在6.2.9以上的版本才能使用 否则就用该方法:setImageIndex
$thisimage->readImageBlob($image);
$delay = $thisimage->getImageDelay();
$thisimage->annotateImage(self::createTextImagickDraw($fontSize, $color), $x_width, $y_height, 0, $string);
$animation->addImage($thisimage);
$animation->setImageDelay($delay);
}
//保存图片
//$animation->writeImages(ROOT_PATH.'/new/test.gif', true);
header("Content-Type: image/gif");
return $animation->getImagesBlob();
}
/**
* 添加文字
* @param int $fontSize 字体大小
* @param string $fillColor 字体的填充颜色
* @param string $underColor 字体背景色
* @param string $font 字体
* @return ImagickDraw 返回图片
* author :lianghuiju@chuchujie.com
* function_name : createTextImagickDraw
* datetime : 2018/8/20
* description :
*/
protected function createTextImagickDraw($fontSize = 12, $fillColor = '', $underColor = '', $font = '') {
if(empty($font) || $font == ''){
$font = APPPATH . '../resources/font/PingFang.ttc';
}
$draw = new ImagickDraw();
$draw->setFont($font);
$draw->setFontSize($fontSize);
if (!empty($underColor)) $draw->setTextUnderColor(new ImagickPixel($underColor));
if (!empty($fillColor)) $draw->setFillColor(new ImagickPixel($fillColor));
return $draw;
}
/**
* 添加图片
* @param string $waterImg 图片地址
* @param int $x 宽度位置
* @param int $y 高度位置
* @param int $width 图片的宽度
* @param int $height 图片的高度
* @return ImagickDraw 生成新的图
* author :lianghuiju@chuchujie.com
* function_name : createWaterImagickDraw
* datetime : 2018/8/20
* description :
*/
public function createWaterImagickDraw($waterImg = 'water.png', $x = 10, $y = 85, $width = 16, $height = 16) {
$water = new Imagick($waterImg);
$draw = new ImagickDraw();
$draw->composite($water->getImageCompose(), $x, $y, $width, $height, $water);
return $draw;
}
}
$image = new CI_Imageick();
$image_name = $_REQUEST['url'];
$string = $_REQUEST['string'];
if (empty($string) || empty($image_name)) {
echo json_encode(array('url' => $image_name, 'string' => "{$string}"));
die();
}
$fontSize = 60;
$color = "#000000";
$x_width = 30;
$y_height = 155;
$imagePath = $image::setNewImageick($image_name, $string, $fontSize, $color, $x_width, $y_height);
echo $imagePath;
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。