PHP等比例生成缩略图

发布时间:2019-07-17 17:48:49

使用ThinkPHP生成缩略图及显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数


1:open() 打开被处理的图片


2:thumb() 生成缩略图 默认1等比缩放 (其中2,3,4,5,6代表的含义参见父类文件Image.class.php)


3:save() 缩略图到服务器


生成缩略图步骤分以下四步


* 1.实例化

* 2.打开图片open()

* 3.生成缩略图thumb() 默认等比缩放

* 4.保存save()

                

PHP等比例生成缩略图

/**

    * 生成缩略图

    * $imgSrc           图片源路径

    * $resize_width     图片宽度

    * $resize_height    图片高度

    * $dstimg           缩略图路径

    * $isCut            是否剪切图片

    */

    public function reSizeImg($imgSrc, $resize_width, $resize_height, $dstimg, $isCut = false) {

        //图片的类型

        $type = substr(strrchr($imgSrc, "."), 1);

        //初始化图象

        if ($type == "jpg" || $type == "jpeg") {

            $im = imagecreatefromjpeg($imgSrc);

        }

        if ($type == "gif") {

            $im = imagecreatefromgif($imgSrc);

        }

        if ($type == "png") {

            $im = imagecreatefrompng($imgSrc);

        }

  

        $width = imagesx($im);

        $height = imagesy($im);

  

        //生成图象

        //改变后的图象的比例

        $resize_ratio = ($resize_width) / ($resize_height);

        //实际图象的比例

        $ratio = ($width) / ($height);

        if (($isCut) == 1) {

            if ($ratio >= $resize_ratio) {

                //高度优先

                $newimg = imagecreatetruecolor($resize_width, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height);

                ImageJpeg($newimg, $dstimg);

            }

            if ($ratio < $resize_ratio) {

                //宽度优先

                $newimg = imagecreatetruecolor($resize_width, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio));

                ImageJpeg($newimg, $dstimg);

            }

        } else {

            if ($ratio >= $resize_ratio) {

                $newimg = imagecreatetruecolor($resize_width, ($resize_width) / $ratio);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height);

                ImageJpeg($newimg, $dstimg);

            }

            if ($ratio < $resize_ratio) {

                $newimg = imagecreatetruecolor(($resize_height) * $ratio, $resize_height);

                imagecopyresampled($newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height);

                ImageJpeg($newimg, $dstimg);

            }

        }

        ImageDestroy($im);

    }

远近互联前端小秦整理发布,希望能对学习技术的你有所帮助

远近互联专业提供网站建设、APP开发、网站优化、外贸网站SEO、微信运营的品牌整合营销服务让客户通过网络品牌建立与网络传播提高业绩。


【相关推荐】