ImageController.php 2.4 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 图片上传
+----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Http\Controllers\Service
 * @package   App\Http\Controllers\Service
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年11月13日 01:26:09
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Http\Controllers\Web;

use App\Http\Controllers\Service\UploadController;
use Illuminate\Http\Request;
use Intervention\Image\Facades\Image;

/**
 * Class ImageController
 *
 * @category  App\Http\Controllers\Service
 * @package   App\Http\Controllers\Service
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年11月13日 01:26:09
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class ImageController extends UploadController
{
    /**
     * 图片上传
     *
     * @param Request $request 上传请求request
     * @param string $fileKey  上传文件的field域
     * @param string $fileType 上传文件的类型
     *
     * @return array
     * @throws \Exception
     */
    public function store(Request $request, $fileKey = 'file', $fileType = 'image')
    {
        return parent::upload($request, $fileKey, $fileType);
    }

    /**
     * 图片缩略
     *
     * @param Request $request
     * @return mixed|string
     */
    public function thumb(Request $request)
    {
        //文件不存在抛出异常
        if (!$request->filled('file')) {
            return abort('404');
        }

        if (!$request->filled('size')) {
            $image = Image::make(public_path($request->input('file')));
        } else {
            list($width, $height) = explode('x', $request->size);
            $image = Image::make(public_path($request->input('file')));
            $image->resize($width, $height, function ($constraint) {
                $constraint->aspectRatio();
                $constraint->upsize();
            });

            $path = $image->dirname . '/' . $image->filename . '_' . $width . 'x' . $height . '.' . $image->extension;
            $image->save($path);
        }

        return $image->response($image->extension, 100);
    }
}