Laravel interventation image break图像保存方法

时间:2017-06-01 16:53:51

标签: php image laravel-5 intervention

我在laravel 5.4 ......

我需要上传一些图片并为每张图片制作缩略图,并以其他名称保存缩略图。

好吧,上传工作正常但是当我尝试使用intervention包调整图片大小并制作缩略图时,保存的缩略图似乎已被破坏。

请看一下这张照片: show images

这是我的代码:

    $image = $request->file('ax');
    $imagename = mt_rand(999, 999999) . "_" . time() . "_" . $image->getClientOriginalExtension();

    $img = Image::make($image->getRealPath());
    $width = $img->width();
    $height = $img->height();

    $img->resize(200, null, function ($constraint) {
            $constraint->aspectRatio();
        })->save(public_path('storage/' . $token) . '/' . $imagename);

如果我将storage path更改为:

Storage::url($token)

我会收到一个错误说:

  

无法将图像数据写入路径(/ storage / ajxpmXZF2rPfyOu39CcdEgC7Gpi5AlGviysrug88 / 872130_1496335864_jpg)

请你帮我找一下我的问题......?

提前致谢

1 个答案:

答案 0 :(得分:0)

相应地更改图像的存储路径。如果图像上传失败,请优雅地处理它而不是例​​外。

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

    if (!$image->isValid()) {
        throw new \Exception('Failed to upload image.');
    }

    $imagename = mt_rand(999, 999999) . "_" . time() . "_" . $image->getClientOriginalExtension();

    $img = Image::make($image);

    $img->resize(200, null, function ($constraint) {
        $constraint->aspectRatio();
    });

    $img->save(public_path("storage/{$token}/{$imagename}"));