avatar

麦兜的小站

MDO.INK

  • 首页
  • 随笔
  • 知识库
  • 归档
  • 动态
  • 标签
  • 关于
Home thinkphp5动态缩略图实现_tp5 缩略图
文章

thinkphp5动态缩略图实现_tp5 缩略图

Posted 2025-01-27 Updated 2025-01- 27
By power 已删除用户
5~7 min read

1、动态缩略图程序

由于tp5自带图片处理类,我们就可以不用再另外写裁剪等方法了,但是tp5的图片处理类没有输出方法,我们复制一份save的方法,另外命名一个preview的方法,稍微修改下用来输出就行了。(此类文件路劲在vendor/topthink/think-image/src/Image.php,如果没有这个类文件请用composer下载。)代码如下:

`public function preview($quality = 100, $interlace = true)
    {

        $type = $this->info['type'];
        header('content-type:'.$this->info['mime']);
        if ('jpeg' == $type || 'jpg' == $type) {
            //JPEG图像设置隔行扫描
            imageinterlace($this->im, $interlace);
            imagejpeg($this->im, null, $quality);
        } elseif ('gif' == $type && !empty($this->gif)) {
            imagegif($this->im, null);
        } elseif ('png' == $type) {
            //设定保存完整的 alpha 通道信息
            imagesavealpha($this->im, true);
            //ImagePNG生成图像的质量范围从0到9的
            imagepng($this->im, null, min((int) ($quality / 10), 9));
        } else {
            $fun = 'image' . $type;
            $fun($this->im, '');
        }
        exit; //一定要写exit,不然输出的是二进制代码
    }` 

我们随意创建一个控制器和一个方法,例如:Image/thumb,调用刚刚我们修改的方法,代码如下:

`public function thumb($path,$width=160,$height=120)
{
    $image = thinkImage::open(trim($path,'/'));
    $image->thumb($width,$height)->preview();
}` 

假设我们在根目录有个图片test.jpg
访问路径:http://thinkphp5/Image/thumb?path=test.jpg&width=320&height=240
这个时候我们会看到一个新的缩略图了,下面就要开始配置服务端了。

2、配置服务端

我们之前已经有过thinkphp隐藏index.php的配置了,这样加我们新的配置上去就可以了。

apache的配置
`<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On

    #新增配置
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+.(jpg|jpeg|png|gif))!(d+)x(d+).*$ image/thumb?path=$1&width=$3&height=$4
    #新增配置

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>` 
nginx的配置
`if (!-e $request_filename) {
    #新增配置
    rewrite  ^(.+.(jpg|jpeg|png|gif))!(d+)x(d+).*$ image/thumb?path=$1&width=$3&height=$4;
    #新增配置
    rewrite  ^(.*)$  /index.php?s=$1  last;
    break;
}` 

访问根目录的test.jpg图片,路径:http://thinkphp5/test.jpg!320x240
到这里就大功告成了!

知识库
License:  CC BY 4.0
Share

Further Reading

Jul 31, 2025

如何实现接口幂等性

通俗的说,用户在系统中有操作,不管重复多少次,都应该产生一样的效果或返回一样的结果的。 幂等性的概念 幂等(Idempotent)是一个数学与计算机学的概念,常见于抽象代数中。 f(n)=1^n//无...

Jul 19, 2025

10个npm工具包

有了npm之后,前端人员真的是过上好日子了。我们可以直接把别人写好的工具包拿来用,非常的方便。 1.day.js-轻量日期处理 npminstalldayjs importdayjsfrom'd...

Jul 17, 2025

How to set up PHP7.4 on MacOS.

Thisisallverywellandgood.Apartfromonesmallinsignificantthing… TheversionofPHPinuseiscurrently7.4. Th...

OLDER

让Linux用户sudo操作免密码

NEWER

最强平替Postman的工具

Recently Updated

  • 如何实现接口幂等性
  • 10个npm工具包
  • How to set up PHP7.4 on MacOS.
  • Automa:一键自动化,网页数据采集与工作流程优化专家Automa:解锁自动化
  • Mac 下用 brew 搭建 LNMP

Trending Tags

thinkphp clippings

Contents

©2025 麦兜的小站. Some rights reserved.

Using the Halo theme Chirpy