我正在使用Croppie jQuery 插件,它返回以 base64 编码的裁剪图像。
提交表单(使用base64 编码的裁剪图像)后 - 我使用干预图像库对其进行解码和调整大小:
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 的文件系统(文件存储)存储调整大小的图像,这就是我卡住的地方 - 当我尝试这个时:
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 的 File Storage。
你知道我该如何处理吗?