Laravel使用Intervention实现多图片上传和调整大小

4
有人能给我举个例子,在 Laravel 中使用 intervention 上传和调整多张图片的大小。我只需要控制器中的部分代码。
if($request->hasFile('images')){
  $images = $request->file('images');

我在谷歌上搜索了一下,但只得到了使用单个图片的示例。

3个回答

1
所以我不知道你已经做了什么。让我们从头开始。
首先,您需要Intervention库。因此,请切换到您的主文件夹(包含composer.json文件) 并键入
composer.phar require intervention/image

或者只需在composer.json文件的require数组中添加 "intervention/image": "~2.1" (之后执行 composer update )

"require": {
    "laravel/framework": "5.0.*",
    "intervention/image": "~2.1"
},

现在你需要添加。
'Intervention\Image\ImageServiceProvider',

添加到提供者数组中

'Image' => 'Intervention\Image\Facades\Image'

将其添加到您的别名数组中。在config/app.php中都是如此。
现在,您可以在控制器中的某个位置创建一个“上传函数”,例如:
public function upload() {
    $image = \Image::make(\Input::file('image'));
    $path = storage_path('app')."/";

    // encode image to png
    $image->encode('png');
    // save original
    $image->save($path."original.png");
    //resize
    $image->resize(300,200);
    // save resized
    $image->save($path."resized.png");
}

这将保存两个图像到storage/app文件夹中。一个是原始大小的,另一个被调整为300x200。
这段代码只是一个示例,没有包含任何检查有效图像或其他类似的内容。它只是获取一个文件(假设是图像)并保存两次。 当然,你也不需要编码成png...

0

这个类可以与任何框架或核心PHP一起使用。

有关完整详细信息,请访问下面的链接。

https://learncodeweb.com/web-development/laravel-9-upload-multiple-files-and-image-resizer/

在 Laravel 中,有许多库可以用来上传和调整多张图片的大小。我提供了一种简单易行的解决方案,使用 GD 基类实现。

您只需要通过以下命令使用 composer 进行安装即可:

composer require learncodeweb/filesupload

安装后,可以使用以下命令重新创建autoload文件。(可选)

composer dump-autoload

如何在Laravel 8/9中导入并使用(已测试)。

use anyFileUpload\FilesUploadAndImageResize as anyFilesUpload;
 
$files = new anyFilesUpload('array', ['jpg', 'jpeg', 'png'], public_path('uploads'), 0777);
$files->uploadFiles('files', 250, '', '', 100, '850', ['350']);
 
dd($files->uploadedData);

上传文件到服务器后,它会返回所有已上传的文件名。您可以将这些文件名存储在数据库中。

提供的功能

  1. 上传单个或多个文件。
  2. 上传任何类型的文件(不仅限于图像)。
  3. 图像文件可以调整大小。
  4. 创建图像缩略图(保持图像纵横比)。
  5. 您可以添加水印(文本、图像)。
  6. 与表单轻松集成。
  7. 在一个上传下创建任意数量的缩略图。
  8. 可自定义缩略图文件夹路径。
  9. 可自定义缩略图大小和尺寸。
  10. 文件扩展名过滤器。
  11. 上传文件大小限制。

0

遍历图像并逐一处理:

foreach ($images as $image) {
    Image::make($image)->....
}

我尝试了那样,但是遇到了错误,“Decoder.php第20行的NotReadableException:无法从文件中读取图像”,并且只有一个文件被上传并调整大小。但是当我执行dd $request时,我获得了两个文件。这就是为什么我需要一个获取文件扩展名等完整示例来查看我的错误所在。 - Mcmilan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接