TP框架下GD图片处理类的实现思路
admin
2023-06-23 12:22:14
0次
info=array(
            'width'=>$info[0],
            'height'=>$info[1],
            'type'=>p_w_picpath_type_to_extension($info[2],false),
            'mime'=>$info['mime']
        );
        $fun="p_w_picpathcreatefrom{$this->info['type']}";
        $this->p_w_picpath=$fun($src);
    }

    public function getImage(){
        return $this->p_w_picpath;
    }

    public function getInfo(){
        return $this->info;
    }

    /**
     * 图片压缩
     * @param $width
     * @param $height
     */
    public function thumb($width,$height){
        $p_w_picpath_thumb=p_w_picpathcreatetruecolor($width,$height);
        p_w_picpathcopyresampled($p_w_picpath_thumb,$this->p_w_picpath,0,0,0,0,$width,$height,$this->info['width'],$this->info['height']);
        p_w_picpathdestroy($this->p_w_picpath);
        $this->p_w_picpath=$p_w_picpath_thumb;
    }

    /**
     * 字体水印(默认左下角)
     * @param $fontfile 字体文件consolaz.ttf
     * @param $text 水印内容
     */
    public function fontMark($fontfile,$text){
        //红绿蓝=白+50透明度字体
        $col=p_w_picpathcolorallocatealpha($this->p_w_picpath, 255, 255, 255, 50);  
        //图片字体合成-参数:图像,字体大小,偏转角度,横向偏移,纵向偏移,颜色,字体文件,内容
        p_w_picpathttftext($this->p_w_picpath, 50, 0, 40, $this->info['height']-50, $col, $fontfile, $text);

    }

    /**
     * 图片水印
     * @param $water 水印图片
     * @param $waterInfo 水印图片信息
     */
    public function p_w_picpathMark($water,$waterInfo){
        p_w_picpathcopymerge($this->p_w_picpath,$water,20,30,0,0,$waterInfo['width'],$waterInfo['height'],20);
        /*图片合成-参数:目标图片,水印图片,横向偏移,纵向偏移,
         *水印图片x处开始复制,水印图片的y处开始复制,
         *水印图片x处结束复制,水印图片y处结束复制,水印图片的透明度。
         */
        p_w_picpathdestroy($water);
    }

    public function showInHtml(){
        header("content-type:".$this->info['mime']);
        $funs="p_w_picpath{$this->info['type']}";
        $funs($this->p_w_picpath);
    }

    /**
     * 保存图片
     * @param $newName 保存文件名
     */
    public function saveImage($newName){
        $funs="p_w_picpath{$this->info['type']}";
        $funs($this->p_w_picpath,"$newName.".$this->info['type']);//保存图片
    }

    public function __destruct(){
        p_w_picpathdestroy($this->p_w_picpath);
    }
}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...