统计
  • 建站日期:2021-03-10
  • 文章总数:386 篇
  • 评论总数:421 条
  • 分类总数:9 个
  • 最后更新:10月20日
文章 未分类

用thinkphp6实现图片文件格式转换

创新博客
首页 未分类 正文

用thinkphp6实现图片文件格式转换

用thinkphp6实现图片文件格式转换
-创新博客-专注于资源分享的blog
-第1
张图片
1,在控制器中获取上传的文件

$file = $this->request->file('image');

2,判断文件是否上传成功并获取文件扩展名

if ($file) {
    $info = $file->validate(['size'=>1024*1024*2, 'ext'=>'jpg,jpeg,png'])->move('uploads/');
    if ($info) {
        // 获取文件扩展名
        $ext = $info->getExtension();
        $filename = $info->getFilename();            
    } else {
        return $this->error($file->getError());
    }
} else {
    return $this->error('请上传文件!');
}

3,判断扩展名,如果是jpg或jpeg,则将其转换成png

if ($ext == 'jpg' || $ext == 'jpeg') {
    $img = Image::open('uploads/' . $filename);
    $img->save('uploads/' . $filename . '.png');
    $ext = 'png';
}

这里使用了 thinkphp 自带的图片处理库 Image,将 jpg 转换为 png 格式,并保存到 uploads 目录下。
4,返回图片链接
最后一步是在控制器中返回图片链接。

return $this->success([
    'url' => '/uploads/' . $filename . '.' . $ext
]);

下面是完整代码

控制器代码

<?php
namespace appindexcontroller;

use thinkController;
use thinkfacadeDb;
use thinkfacadeView;
use thinkfacadeRequest;
use thinkfacadeFilesystem;
use thinkImage;

class Index extends Controller
{
    public function index()
    {
        return View::fetch();
    }

    public function uploadImage()
    {
        $file = $this->request->file('image');

        if ($file) {
            $info = $file->validate(['size'=>1024*1024*2, 'ext'=>'jpg,jpeg,png'])->move('uploads/');
            if ($info) {
                $ext = $info->getExtension();
                $filename = $info->getFilename();

                if ($ext == 'jpg' || $ext == 'jpeg') {
                    $img = Image::open('uploads/' . $filename);
                    $img->save('uploads/' . $filename . '.png');
                    $ext = 'png';
                }

                return $this->success([
                    'url' => '/uploads/' . $filename . '.' . $ext
                ]);
            } else {
                return $this->error($file->getError());
            }
        } else {
            return $this->error('请上传文件!');
        }
    }
}

前端这里用的是Bootstrap

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>图片上传</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <form method="post" enctype="multipart/form-data">
            <div class="form-group">
                <label for="image">选择图片:</label>
                <input type="file" name="image" id="image">
            </div>

            <button type="button" class="btn btn-primary" id="upload-btn">上传</button>
        </form>

        <div class="mt-4" id="result"></div>
    </div>

    <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
    <script>
        $(function() {
            $('#upload-btn').click(function() {
                var formData = new FormData();
                formData.append('image', $('#image')[0].files[0]);

                $.ajax({
                    url: '/index/uploadImage',
                    type: 'POST',
                    data: formData,
                    processData: false,
                    contentType: false,
                    success: function(res) {
                        $('#result').html('<img src="' + res.data.url + '">');
                    },
                    error: function(err) {
                        console.log(err);
                    }
                });
            });
        });
    </script>
</body>
</html>

这样就完成了基于 ThinkPHP 实现图片格式转换的功能。请注意在根目录下创建一个 uploads 目录,用于保存上传的文件,同时也需要安装 intervention/image 扩展库来实现图片处理。

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2023-5-21,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
分享宝塔定时删除某个文件夹下面的所有内容
« 上一篇
ChatGPT-Openai官方的应用程序上线
下一篇 »
为了防止灌水评论,登录后即可评论!

HI ! 请登录
注册会员,享受下载全站资源特权。

最新文章

热门文章