PHP等比例生成缩略图

来源:互联网 发布:盐巴散弹枪 淘宝 编辑:程序博客网 时间:2024/05/16 23:35
/**
     * 等比例生成缩略图
     * @param $imgSrc
     * @param $resize_width
     * @param $resize_height
     * @param $isCut
     * @author james.ou 2011-11-1
     */
    public function reSizeImg($imgSrc$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 $name "_s." $type;
 
        $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);
    }
原创粉丝点击