PHP生成缩略图实例讲解

 285

这篇文章主要介绍了PHP生成缩略图实例讲解,文章列举了实例代码,有正好需要的同学可以借鉴下。


封装的方法函数:

<?php
/**
 * 生成缩略图
 * $imgSrc     图片源路径
 * $thumbWidth   缩略图宽度
 * $thumbHeight  缩略图高度
 * $thumbSrc    缩略图路径
 * $isCut     是否剪切图片
 */
function createThumbImg($imgSrc, $thumbWidth, $thumbHeight, $thumbSrc, $isCut = false) {
    //1.获取图片的类型
    $type = substr(strrchr($imgSrc, "."), 1);
    //2.初始化图象
    if ($type == "jpg" || $type == "jpeg") {
        //创建一块画布,并从JPEG文件或URL地址载入一副图像
        $sourceImg = imagecreatefromjpeg($imgSrc);
    }elseif ($type == "gif") {
        //创建一块画布,并从GIF文件或URL地址载入一副图像
        $sourceImg = imagecreatefromgif($imgSrc);
    }elseif ($type == "png") {
        //创建一块画布,并从PNG文件或URL地址载入一副图像
        $sourceImg = imagecreatefrompng($imgSrc);
    }elseif ($type == "wbmp") {
        //创建一块画布,并从WBMP文件或URL地址载入一副图像
        $sourceImg = imagecreatefromwbmp($imgSrc);
    }
    //取得图像宽度
    $width = imagesx($sourceImg);
    //取得图像高度
    $height = imagesy($sourceImg);
 
    //3.生成图象
    //缩略图的图象比例
    $scale = ($thumbWidth) / ($thumbHeight);
    //源图片的图象比例
    $ratio = ($width) / ($height);
    if (($isCut) == 1) {
        //高度优先
        if ($ratio >= $scale) {        
            //创建真彩图像资源(imagecreatetruecolor()函数使用GDLibrary创建新的真彩色图像)
            $newimg = imagecreatetruecolor($thumbWidth, $thumbHeight);
            //图像处理
            imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, (($height) * $scale), $height);
            //以JPEG格式将图像输出到浏览器或文件
            ImageJpeg($newimg, $thumbSrc);
        }
        //宽度优先
        if ($ratio < $scale) {       
            $newimg = imagecreatetruecolor($thumbWidth, $thumbHeight);
            imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $width, (($width) / $scale));
            ImageJpeg($newimg, $thumbSrc);
        }
    } else {
        if ($ratio >= $scale) {
            $newimg = imagecreatetruecolor($thumbWidth, ($thumbWidth) / $ratio);
            imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, $thumbWidth, ($thumbWidth) / $ratio, $width, $height);
            ImageJpeg($newimg, $thumbSrc);
        }
        if ($ratio < $scale) {
            $newimg = imagecreatetruecolor(($thumbHeight) * $ratio, $thumbHeight);
            imagecopyresampled($newimg, $sourceImg, 0, 0, 0, 0, ($thumbHeight) * $ratio, $thumbHeight, $width, $height);
            ImageJpeg($newimg, $thumbSrc);
        }
    }
    //销毁图像
    ImageDestroy($sourceImg);
}
?>

调用示例:

<?php
    //图片源路径
    $imgSrc="D:/PHP/test/demo.jpg";
    //缩略图路径
    $thumbSrc="D:/PHP/test/thumb.jpg";
    createThumbImg($path,100,100,$thumbSrc);
?>



本文网址:https://www.98ks.vip/server-168.html
转载请声明来自:98k源码网 - PHP生成缩略图实例讲解

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐