php生成缩略图

调取方法:$this->reSizeImg($coverAbsolutePath,$fileUrl,'480','480');

/**

$imgSrc:图片地址

$fileUrl :存储路径

**/

static public function reSizeImg($imgSrc,$fileUrl, $resize_width, $resize_height, $isCut = false)

    {

        //图片的类型

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

        //初始化图象

        if ($type == "jpg") {

            $im = imagecreatefromjpeg($imgSrc);

        }

        if ($type == "gif") {

            $im = imagecreatefromgif($imgSrc);

        }

        if ($type == "png") {

            $im = imagecreatefrompng($imgSrc);

        }

        //目标图象地址

        $full_length = strlen($imgSrc);

        $type_length = strlen($type);

        $name_length = $full_length - $type_length;

        $name = substr($imgSrc, 0, $name_length - 1);

        $dstimg = $fileUrl;


        $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);

    }

备注:内容均来自网络,学习使用,不进行商业用途。

邮箱:[email protected]

你可能感兴趣的:(php生成缩略图)