Reputation: 103
I am developing api in Laravel 5.4. I will receive the image in base64 format. How can I convert the base64 to image in Laravel?
Upvotes: 7
Views: 18743
Reputation: 449
1- use package intervention image
use Illuminate\Support\Facades\Storage;
use Intervention\Image\ImageManagerStatic;
use Illuminate\Support\Str;
$logo = ImageManagerStatic::make($request->logo)->encode('png');
$logo_name = Str::random(40) . '.png';
Storage::disk('s3')->put('products_seller/' . $logo_name, $logo);
If you are using laravel, install intervention/image-laravel
instead and then do this
$logo = \Image::read($request->logo)->encode();
$logo_name = Str::random(40) . '.png';
Storage::disk('s3')->put('products_seller/' . $logo_name, $logo);
Upvotes: 0
Reputation: 59
this solution will deal with all image types
$image = $request->input('image'); // image base64 encoded
preg_match("/data:image\/(.*?);/",$image,$image_extension); // extract the image extension
$image = preg_replace('/data:image\/(.*?);base64,/','',$image); // remove the type part
$image = str_replace(' ', '+', $image);
$imageName = 'image_' . time() . '.' . $image_extension[1]; //generating unique file name;
Storage::disk('public')->put($imageName,base64_decode($image));
Upvotes: 5
Reputation: 103
I found the solution:
use Illuminate\Support\Facades\Storage;
function createImageFromBase64(Request $request)
{
$file_data = $request->input('image_file');
$file_name = 'image_' . time() . '.png'; //generating unique file name;
if ($file_data != "") { // storing image in storage/app/public Folder
Storage::disk('public')->put($file_name, base64_decode($file_data));
}
}
Upvotes: 0