【问题标题】:Intervention Image + Laravel's File Storage: Store resized/decoded base64 image (Intervention Image encode() doesn't work)干预图像 + Laravel 的文件存储:存储调整大小/解码的 base64 图像(干预图像编码()不起作用)
【发布时间】:2018-07-11 04:40:12
【问题描述】:
  • 我正在使用Croppie jQuery 插件,它返回裁剪后的图像base64 编码。

  • 提交表单后(裁剪后的图像以 base64 编码) - 我使用 Intervention Image 库对其进行解码和调整大小:

    public function decodeResizeAndStore(Request $request)
    {
        $croppie_code = $request->croppie_code;
    
        // https://stackoverflow.com/a/11511605/4437206
        if (preg_match('/^data:image\/(\w+);base64,/', $croppie_code, $type)) {
            $encoded_base64_image = substr($croppie_code, strpos($croppie_code, ',') + 1);
            $type = strtolower($type[1]);
    
            $decoded_image = base64_decode($encoded_base64_image);
    
            $resized_image = Image::make($decoded_image)->resize(300, 200);
    
            // AND NOW I WANT TO STORE $resized_image using Laravel filesystem BUT...
        }
    }
    

最后,我想使用 Laravel's filesytem (File Storage) 存储调整大小的图像,这就是我卡住的地方 - 当我尝试这个时:

Storage::put($path, (string) $resized_image->encode());

...它不起作用。实际上,它正在工作 - 看起来有一些内存泄漏或什么,浏览器的选项卡冻结,我的 RAM 和 CPU 使用率很高......

所以我只是尝试了:

dd($resized_image->encode());

...是的,这肯定是崩溃的地方 - 当使用 encode() 方法时。

我不知道为什么,可能是因为我没有使用标准图片上传,而是使用解码后的 base64?

但是,另一方面,Intervention Image 可以从 base64 以及解码后的 base64 创建一个新的图像实例:http://image.intervention.io/api/make ...而且,就我而言,这可以正常工作:

$resized_image = Image::make($decoded_image)->resize(300, 200);

然后我可以使用save() 方法,一切都会正常。但我需要使用Laravel's File Storage。

你知道我该如何处理吗?

【问题讨论】:

    标签: php laravel intervention laravel-storage


    【解决方案1】:

    假设您使用的是最新版本的 Laravel (5.7):

    您可以像这样使用stream 方法:

    // use jpg format and quality of 100
    $resized_image = Image::make($decoded_image)->resize(300, 200)->stream('jpg', 100);
    // then use Illuminate\Support\Facades\Storage
    Storage::disk('your_disk')->put('path/to/image.jpg', $resized_image); // check return for success and failure
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 2019-03-23
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      相关资源
      最近更新 更多