首页 > 解决方案 > 我想用干预/图像调整照片的大小

问题描述

我想调整我使用干预/图像上传的图像的大小,但我不知道如何。

我尝试了几种上传调整大小的方法,但我不知道如何使它工作。函数 storeImage 是我要调整大小的地方。

家庭控制器.php

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\User;
    use Carbon\Carbon;
    use Illuminate\Support\Facades\Storage;
    use Illuminate\Support\Facades\File;
    use Intervention\Image\ImageManager;
    use Intervention\Image\Facades\Image;

    class HomeController extends Controller
    {

      public function update(User $user){
          $user = auth()->user();

          $user-> name = request('name');
          $user-> phone = request('phone');
          $user-> image = request('image');


          $oldFilename = $user->image;

          $this->storeImage($user);

          File::delete(public_path('images'),$oldFilename);

          $imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief','jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];

          $foo = \File::extension($user->image);

          if(in_array($foo, $imageExtensions))
          {
            $user->save();
          }


          return redirect('user/account');
        }


        private function storeImage($user){
          if(request()->has('image')){

            $user->image = $user->email.'.'.request()->image->getClientOriginalExtension();

            $imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief','jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];

            $foo = \File::extension($user->image);
            if(in_array($foo, $imageExtensions))
            {
              $file = request()->image;
              $img = Image::make($file->getRealPath())->resize(320, 240);
              $img->move(public_path('images'), $user->image);

            }

          }
        }
    }

它向我抛出了错误:

命令 (Move) 不适用于驱动程序 (Gd)。

我用保存解决了它

$img->save(public_path('images'.$user->image)); 

但它不会将图像移动到文件夹中。我该如何解决?谢谢

标签: phplaravel

解决方案


根据干预图像的文档,您需要save()调用move()

private function storeImage($user)
{
    if (request()->has('image')) {

        $user->image = $user->email . '.' . request()->image->getClientOriginalExtension();

        $imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'svgz', 'cgm', 'djv', 'djvu', 'ico', 'ief', 'jpe', 'pbm', 'pgm', 'pnm', 'ppm', 'ras', 'rgb', 'tif', 'tiff', 'wbmp', 'xbm', 'xpm', 'xwd'];

        $foo = \File::extension($user->image);
        if (in_array($foo, $imageExtensions)) {
            $img = Image::make(request()->image)
                ->resize(320, 240)
                ->save('images/' . $user->image);

        }

    }
}

推荐阅读