加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php使用GD创建保持宽高比的缩略图

发布时间:2020-05-25 07:30:21 所属栏目:PHP 来源:互联网
导读:php使用GD创建保持宽高比的缩略图

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

/**
     * Create a thumbnail image from $inputFileName no taller or wider than
     * $maxSize. Returns the new image resource or false on error.
     * Author: mthorn.net
     */
    function thumbnail($inputFileName,$maxSize = 100)
    {
        $info = getimagesize($inputFileName);
  
        $type = isset($info['type']) ? $info['type'] : $info[2];
  
        // Check support of file type
        if ( !(imagetypes() & $type) )
        {
            // Server does not support file type
            return false;
        }
  
        $width  = isset($info['width'])  ? $info['width']  : $info[0];
        $height = isset($info['height']) ? $info['height'] : $info[1];
  
        // Calculate aspect ratio
        $wRatio = $maxSize / $width;
        $hRatio = $maxSize / $height;
  
        // Using imagecreatefromstring will automatically detect the file type
        $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));
  
        // Calculate a proportional width and height no larger than the max size.
        if ( ($width <= $maxSize) && ($height <= $maxSize) )
        {
            // Input is smaller than thumbnail,do nothing
            return $sourceImage;
        }
        elseif ( ($wRatio * $height) < $maxSize )
        {
            // Image is horizontal
            $tHeight = ceil($wRatio * $height);
            $tWidth  = $maxSize;
        }
        else
        {
            // Image is vertical
            $tWidth  = ceil($hRatio * $width);
            $tHeight = $maxSize;
        }
  
        $thumb = imagecreatetruecolor($tWidth,$tHeight);
  
        if ( $sourceImage === false )
        {
            // Could not load image
            return false;
        }
  
        // Copy resampled makes a smooth thumbnail
        imagecopyresampled($thumb,$sourceImage,$tWidth,$tHeight,$width,$height);
        imagedestroy($sourceImage);
  
        return $thumb;
    }
  
    /**
     * Save the image to a file. Type is determined from the extension.
     * $quality is only used for jpegs.
     * Author: mthorn.net
     */
    function imageToFile($im,$fileName,$quality = 80)
    {
        if ( !$im || file_exists($fileName) )
        {
           return false;
        }
  
        $ext = strtolower(substr($fileName,strrpos($fileName,'.')));
  
        switch ( $ext )
        {
            case '.gif':
                imagegif($im,$fileName);
                break;
            case '.jpg':
            case '.jpeg':
                imagejpeg($im,$quality);
                break;
            case '.png':
                imagepng($im,$fileName);
                break;
            case '.bmp':
                imagewbmp($im,$fileName);
                break;
            default:
                return false;
        }
  
        return true;
    }
  
    $im = thumbnail('temp.jpg',100);
    imageToFile($im,'temp-thumbnail.jpg');

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读