Save Base64 Encoded image to file using PHP

When you are handling API for apps ( iPhone, android, etc ), you can see that they provides the image in Base64 encoded format mostly, so we need to save base64 encoded image to server as a image file. This tutorial will let you know how to save Base64 encoded image to server as a image file using PHP.

If you are getting the image data with image type like as below:

$data = $_POST['image'];
$data = 'data:image/png;base64,AFFAAFdsgBLKLKS346fj42Pj4...';

You need to parse base64 part from this image data like below:

$data = str_replace('data:image/png;base64,', '', $data);
$data = str_replace(' ', '+', $data);

Now decode the image data using base64_decode function like below:

$data = base64_decode($data);

Now you can put this image data to your desired file using file_put_contents function like below:

$file = 'images/'. uniqid() . '.png';
$success = file_put_contents($file, $data);

If you want to rotate the image and save you can use following code:

$data = base64_decode($data); // base64 decoded image data
$source_img = imagecreatefromstring($data);
$rotated_img = imagerotate($source_img, 90, 0); // rotate with angle 90 here
$file = 'images/'. uniqid() . '.png';
$imageSave = imagejpeg($rotated_img, $file, 10);

This is a simple program to save Base64 encoded image to server file using PHP. Hope this tutorial will help you.

  • Patrick Reinhardt

    Probably this tool will help you for base64 image encoding decoding

  • Palmer 

    Thanks, very helpful!

  • Sisi Olsen

    Thank you. Very well explained!

  • Thank you!

  • Nick Hill Sharma

    THank you !!!! Work for me after lot of attempts.

  • kunal

    why you used imagedestroy() in last??