首页 > 作文

PHP学习之图像处理

更新时间:2023-04-06 21:31:58 阅读: 评论:0

<?php$image = new image();$image->water('./upload/up_5cf0caca0565b.png','./upload/up_5cf0cb3a61fae.jpg',9);class image{    //路径    protected $path;    //是否启用随机名字    protected姚雪曼 $israndname;    //要保存的图像类型    protected $type;    //通过构造方法对成员属性进行初始化    function __construct($path = './', $israndname = true, $type = 'png')    {        $this->path = $path;        $this->israndname = $israndname;        $this->type = $type;    }    /**     * 对外公开的水印方法     *     * @param [type] $image 原图片     * @param [type] $water 水印图片     * @param [type] $postion 水印图片的位置     * @param integer $tmd 水印图片的透明度     * @param string $prefix 图片的前缀     * @return void     */    function water($image, $water, $postion, $tmd = 100, $prefix = 'water_')    {        //1、判断这两个图片是否存在        if ((!file_exists($image)) || (!file_exists($water))) {            die('图片资源不存在');        }        //2、得到原图片的宽度和高度以及水印图片的宽带和高度        $imageinfo = lf::getimageinfo($image);        $waterinfo = lf::getimageinfo($water);        //3、判断水印图片能否贴上来        if (!$this->checkimage($imageinfo, $waterinfo)) {            exit('水印图片太大');        }        //4、打开图片        $imageres = lf::openanyimage($image);        $waterres = lf::openanyimage($water);        //5、根据水印图片的位置计算水印图片的坐标        $pos = $this->getpostion($postion, $imageinfo, $waterinfo);        //6、将水印图片贴过来        imagecopymerge($imageres, $waterres, $pos['x'], $pos['y'], 0, 0, $waterinfo['width'], $waterinfo['height'], $tmd);        //7、得到要保存图片的文件名        $newname = $this->createnewname($image, $prefix);        //8、得到保存图片的路径,也就是文件的全路径        $newpath = rtrim($this->path, '/') . '/' . $newname;        //9、保存图片        $this->saveimage($imageres, $newpath);        //10、销毁资源        imagedestroy($imageres);        imagedestroy($waterres);        return $newpath;    }    /**     * 保存图像资源函数     *     * @param [type] $imageres     * @param [type] $newpath     * @return void     */    protected function saveimage($imageres, $newpath)    {        //imagepng   imagegif   imagewbmp        $func = 'image' . $this->type;        //通过变量函数进行保存        $func($imageres, $newpath);    }    /**     * 得到文件名函数     *     * @param [type] $imagepath     * @param [type] $prefix     * @return void     */    protected function createnewname($imagepath, $prefix)    {        if ($this->israndname) {            $name = $prefix . uniqid() . '.' . $this->type;        } el {            $name = $prefix . pathinfo($imagepath)['filename'] . '.' . $this->type;        }        return $name;    }  罗纳尔多迪尼奥  /**     * 根据位置计算水印图片的坐标     *     * @param [type] $postion     * @par短篇伤感爱情故事am [type] $imageinfo     * @param [type] $waterinfo     * @return void     */    protected function getpostion($postion, $imageinfo, $waterinfo)    {        switch ($postion) {            ca 1:                $x = 0;                $y = 0;                break;            ca 2:                $x = ($imageinfo['width'] - $waterinfo['width']) / 2;                $y = 0;                break;            ca 3:                $x = $imageinfo['width'] - $waterinfo['width'];                $y = 0;                break;            ca 4:                $x = 0;                $y = ($imageinfo['height'] - $waterinfo['height']) / 2;;                break;            ca 5:                $x = ($imageinfo['width'] - $waterinfo['width']) / 2;                $y = ($imageinfo['height'] - $waterinfo['height']) / 2;                break;            ca 6:                $x = $imageinfo['width'] - $waterinfo['width'];                $y = ($imageinfo['height'] - $waterinfo['height']) / 2;                break;            ca 7:                $x 家乡的美景= 0;                $y = $imageinfo['height'] - $waterinfo['height'];                break;            ca 8:                $x = ($imageinfo['width'] - $waterinfo['width']) / 2;                $y = $imageinfo['height'] - $waterinfo['height'];                break;            ca 9:                $x = $imageinfo['width'] - $waterinfo['width'];                $y = $imageinfo['height'] - $waterinfo['height'];                break;            ca 0:                $x = mt_rand(0, ($imageinfo['width'] - $waterinfo['width']));                $y = mt_rand(0, ($imageinfo['height'] - $waterinfo['height']));                break;        }        return ['x' => $x, 'y' => $y];    }    /**     * 判断水印图片是否大于原图片     *     * @param [type] $imageinfo     * @param [type] $waterinfo     * @return void     */    protected function checkimage($imageinfo, $waterinfo)    {        if (($waterinfo['width'] > $imageinfo['width']) || ($waterinfo['height'] > $imageinfo['height'])) {            return fal;        }        return true;    }    /**     * 静态方法,根据图片的路径得到图片信息,宽度、高度、mime类型     *     * @param [type] $imagepath     * @return void     */    static function getimageinfo($imagepath)    {        //得到图片信息        $info = getimagesize($imagepath);        //保存图片宽度        $data['width'] = $info[0];        //保存图片高度        $data['height'] = $info[1];        //保存图片mime类型        $data['mime'] = $info['mime'];        //将图片信息返回        return $data;    }    /**     * 根据图片类型打开任意图片     *     * @param [type] $imagepath     * @return void     */    static function openanyimage($imagepath)    {        //得到图片的mime类型        $mime = lf::getimageinfo($imagepath)['mime'];        //根据不同的mime类型来使用不同的函数进行打开图片        switch ($mime) {            ca 'image/png':                $image = imagecreatefrompng($imagepath);                break;            ca 'image/gif':                $image = imagecreatefromoffer的用法gif($imagepath);                break;            ca 'image/jpeg':                $image = imagecreatefromjpeg($imagepath);                break;            ca 'image/wbmp':                $image = imagecreatefromwbmp($imagepath);                break;        }        return $image;    }}

本文发布于:2023-04-06 21:31:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/afd791e8d3a2ee4e8bde73014a2430bf.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP学习之图像处理.doc

本文 PDF 下载地址:PHP学习之图像处理.pdf

标签:图片   水印   类型   路径
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图