я использую 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());
… это не работает На самом деле, это работает что-то — похоже, что есть какая-то утечка памяти или что-то, вкладка браузера зависает, моя оперативная память & Загрузка процессора идет высоко …
Итак, я просто попробовал:
dd($resized_image->encode());
… и да, это то, где он определенно падает — при использовании кодировать () метод.
Я не уверен, почему, может быть, это происходит потому, что я работаю не со стандартной загрузкой изображений, а с декодированной base64?
Но, с другой стороны, Intervention Image может создать новый экземпляр изображения из base64, а также из декодированного base64: http://image.intervention.io/api/make
… и, в моем случае, это работает нормально:
$resized_image = Image::make($decoded_image)->resize(300, 200);
Я мог бы тогда использовать спасти() метод и все будет работать хорошо. Но мне нужно использовать Хранение файлов Laravel.
Вы знаете, как я могу справиться с этим?
Задача ещё не решена.
Других решений пока нет …