晓夏

北漂的女孩

Good Luck To You!

gif图片添加水印和图片

浏览量:397

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


神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。