在 Laravel 5.2 中调整图像大小

2022-08-30 17:18:11

任何人都可以帮我如何在Laravel中实现调整图像大小?

我只有这个代码:

if($request->hasFile('image')){
    if (Input::file('image')->isValid()) {
        $file = Input::file('image');
        $destination = base_path() . '/public/images/ServiceImages';
        $extension = Input::file('image')->getClientOriginalExtension();
        $fileName = rand(111,99999).'.'.$extension;

        if(!empty($data['Image'])){
            unlink($destination.$data['Image']);
        }

        $file->move($destination, $fileName);
        $service->image=$fileName;
    }
}

答案 1

Laravel没有默认调整图像大小。但大多数Laravel开发人员在处理图像时使用“图像干预”。它易于使用。

要安装(映像干预):

步骤1

composer require intervention/image

步骤2在配置/应用上.php:

在$providers数组中,添加以下内容:

Intervention\Image\ImageServiceProvider::class

在$aliases数组中,添加以下内容:

'Image' => Intervention\Image\Facades\Image::class

如果您遇到GD库丢失的问题,请安装它

  • PHP5: sudo apt-get install php5-gd
  • PHP7: sudo apt-get install php7.0-gd

在控制器上使用。

步骤 3

在控制器顶部

use Intervention\Image\ImageManagerStatic as Image;

步骤4

关于你的方法(有几种方法,但这会给你一个想法)

if($request->hasFile('image')) {

    $image       = $request->file('image');
    $filename    = $image->getClientOriginalName();

    $image_resize = Image::make($image->getRealPath());              
    $image_resize->resize(300, 300);
    $image_resize->save(public_path('images/ServiceImages/' .$filename));

}

参考此处


答案 2

我会推荐干预图像来完成这项任务。

只需用作曲家安装它

composer require intervention/image

并像这样使用它:

\Intervention\Image\ImageManagerStatic::make('public/foo')->fit(100)->save($path);

言论

  • 服务供应商干预图像为Laravel提供了一个服务提供者。您可以手动添加服务提供商,如此所述。之后,您可以将配置文件推送到Laravel。但是,配置只有一个选项,即映像驱动程序。 是默认的,因此,如果您不想更改它,则无需使用服务提供程序和配置。gd

  • 别名您可以在 中创建别名,而不是服务提供商:config/app

    'Image' => Intervention\Image\ImageManagerStatic::class
    

    然后你可以像这样使用它:

    \Image::make('public/foo')->fit(100)->save($path);
    
  • 测试使用干预图像时,您仍然可以进行Laravel的文件上传测试。有关详细信息,请参阅如何使用 Laravel 使用干预映像包伪造映像上传以进行测试

推荐