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?
- 4Possible duplicate of Convert Base64 string to an image file?mehulmpt– mehulmpt2018-01-08 15:22:40 +00:00Commented Jan 8, 2018 at 15:22
- Does this answer your question? How to save a PNG image server-side, from a base64 data stringmiken32– miken322020-03-20 15:09:48 +00:00Commented Mar 20, 2020 at 15:09
Add a comment |
3 Answers
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)); 3 Comments
ahinkle
What is
$image_extension.. ? it's not defined here.Yehia Salah
After perform preg_match function $image_extension variable will be containing the image extension
Hadayat Niazi
Great bro, you save my day. God bless you
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
Agil
this does save the file into the folder, but it gets corrupted and not usefull
Simon Shrestha
Could you first try with the png image?
Agil
do you mean the actual image? if that is what you mean it works pretty well
Simon Shrestha
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.
Agil
Lol, I already tried that. I used the same type as it is before upload. and it does not work
|
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);