7

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?

2

3 Answers 3

5

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)); 
Sign up to request clarification or add additional context in comments.

3 Comments

What is $image_extension.. ? it's not defined here.
After perform preg_match function $image_extension variable will be containing the image extension
Great bro, you save my day. God bless you
0

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)); } } 

8 Comments

this does save the file into the folder, but it gets corrupted and not usefull
Could you first try with the png image?
do you mean the actual image? if that is what you mean it works pretty well
May be the base64 image that you have sent using api is jpg image. The above code saves it .png. So it gets corrupted. So could you first convert png image to base64 and use the above code.
Lol, I already tried that. I used the same type as it is before upload. and it does not work
|
0

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); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.