php 生成缩略图

 未分类  2018-10-18  admin  1471  1985

php 生成缩略图

$img = 'images/2.jpg';
createThumb($img, 500);

/**
 * 生成缩略图
 * @param $img 原图路径
 * @param int $thumb_width 缩略图的宽度,默认200
 * @param string $ext 缩略图的扩展名,默认和原图相同
 * @return bool|string
 */
function createThumb($img, $thumb_width = 200, $ext = '')
{
    //1.获取原图像的大小
    $img_arr = getimagesize($img);
    $img_width = $img_arr[0];
    $img_height = $img_arr[1];
    //获取原图像资源
    $src = imagecreatefromAll($img);
    //2.计算缩略图大小
    //方式二:
    //$thumb_width =200;
    $thumb_height = $img_height * $thumb_width / $img_width;
    //3.创建画布
    //$thumb = imagecreate($thumb_width, $thumb_height);
    $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
    //4.生成缩略图
    imagecopyresized($thumb, $src, 0, 0, 0, 0, $thumb_width, $thumb_height, $img_width, $img_height);
    //5.生成文件
    $thumb_file = createImageAll($img, $thumb, $ext);
    //只在浏览器中显示,不生成文件
    //header('content-type:image/jpeg');
    //imagepng($thumb);

    imagedestroy($thumb);
    imagedestroy($src);
    return $thumb_file;
}

/**
 * 获取图片资源
 * @param $src  图片路径
 * @return bool|resource
 */
function imageCreateFromAll($src)
{
    $src_arr = getimagesize($src);
    switch ($src_arr['mime']) {
        case 'image/jpeg':
            return imagecreatefromjpeg($src);
        case 'image/png':
            return imagecreatefrompng($src);
        case 'image/gif':
            return imagecreatefromgif($src);
        case 'image/bmp':
            return imagecreatefrombmp($src);
//        case 'image/wbmp':
//            return imagecreatefromwbmp($src);
//        case 'image/webp':
//            return imagecreatefromwebp($src);
//        case 'image/x-xbitmap':
//            return imagecreatefromxbm($src);
//        case 'image/x-xpixmap':
//            return imagecreatefromxpm($src);
        default :
            return false;
    }
}

/**
 * 生成图片
 * @param $src  原图的路径
 * @param $im   目标图的资源
 * @param string $ext 生成图片的扩展名,默认是原图扩展名
 * @param string $prefix 文件名前缀
 * @param int $quality 生成jpg格式图片的质量
 * @return bool|string
 */
function createImageAll($src, $im, $ext = '', $prefix = 'thumb_', $quality = 80)
{
    $src_path = pathinfo($src);
    //$ext 为空,和原图扩展名相同
    if (empty($ext)) {
        $ext = $src_path['extension'];
    }
    $new_file = $src_path['dirname'] . '/' . $prefix . $src_path['filename'] . '.' . $ext;
    switch (strtolower($ext)) {
        case 'jpg':
            imagejpeg($im, $new_file, $quality);
            return $new_file;
        case 'png':
            imagepng($im, $new_file);
            return $new_file;
        case 'gif';
            imagegif($im, $new_file);
            return $new_file;
        default:
            return false;
    }
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

php 生成缩略图 —— code.cent123.com

相关推荐


Systemd Web 管理系统:简化服务管理

# Systemd Web Systemd Web 是一个 Systemd 的 Web UI 管理系统,通过直观的界面和易用的操作,让用户能够轻松地管理 Linux 系统和服务。该项目旨在简化 Systemd 的使用,使得无论是专业的系统管理员还是普通的用户,都能够方便地对系统进行操作。 ## [github地址] (https://github.com/topascend/systemd

laravel 自定义写入日志

laravel 自定义写入日志if(!function_exists('myLog')){ /** *生成自定义文件日志内容 *@param$data *@paramstring$title *@parambool$isClear *@returnvoid *@Author:cent123.com */ functionmyLog($data,string$tit

systemctl 使用

Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。而systemctl是Systemd的主命令,用于管理系统。其实我们大部分服务都有使用systemctl管理,比如MySQL、Nginx等等。常见配置如下:[Unit] #单元描述 Description=GFAPP #在什么服务启动之后再执行本程序 After=mysql.service [Serv

php redis 分布式锁

Redis 分布式锁是一种使用 Redis 数据库来实现的同步机制,用于在分布式系统中保证多个进程或线程对共享资源的互斥访问。Redis 分布式锁的基本原理是使用 Redis 的 SETNX 命令来尝试设置一个键,如果这个键不存在,那么获取锁成功,否则获取锁失败。获取锁成功后,需要设置锁的过期时间,以防止锁被永久占用。释放锁时,需要删除这个键。Redis 分布式锁有一些优点和缺点:优点:Redis