I have a base64 encoded png, how do I write the image to a file in PHP?
My best guess is that you simply need to call base64_decode()
on $_REQUEST['data']
before writing it to the file. That should be plenty enough :).
How to save a PNG image server-side, from a base64 data URI
You need to extract the base64 image data from that string, decode it and then you can save it to disk, you don't need GD since it already is a png.
$data = 'data:image/png;base64,AAAFBfj42Pj4';
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
file_put_contents('/tmp/image.png', $data);
And as a one-liner:
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));
An efficient method for extracting, decoding, and checking for errors is:
if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1);
$type = strtolower($type[1]); // jpg, png, gif
if (!in_array($type, [ 'jpg', 'jpeg', 'gif', 'png' ])) {
throw new \Exception('invalid image type');
}
$data = str_replace( ' ', '+', $data );
$data = base64_decode($data);
if ($data === false) {
throw new \Exception('base64_decode failed');
}
} else {
throw new \Exception('did not match data URI with image data');
}
file_put_contents("img.{$type}", $data);
Convert Base64 string to an image file?
The problem is that data:image/png;base64,
is included in the encoded contents. This will result in invalid image data when the base64 function decodes it. Remove that data in the function before decoding the string, like so.
function base64_to_jpeg($base64_string, $output_file) {
// open the output file for writing
$ifp = fopen( $output_file, 'wb' );
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
// clean up the file resource
fclose( $ifp );
return $output_file;
}
Base64 image string into image file using PHP
I figure it out the solution.
$pathwithfile = 'your file path with image name';//e.g '/uploads/test.jpg'
$ifp = fopen( $pathwithfile, 'wb' );
// split the string on commas // $data[ 0 ] == "data:image/png;base64" // $data[ 1 ] == <actual base64 string> $data = explode( ',', $imagedata ); $success = fwrite( $ifp, base64_decode( $data[ 1 ] ) ); // clean up the file resource fclose( $ifp );
How to convert an image to Base64 encoding
I think that it should be:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
How to create and save image to a website folder from a base64 encoded data/string using PHP
The file permissions was not set to writing mode. set it to 777 and tested with the following code.
<?php
$base = $_POST['encoded'];
$base = base64_decode($base);
$im = imagecreatefromstring($base);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im,'image.png'); // saving image to the same directory
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>
In PHP how do I take a base64 encoded png and output that png as an image?
Thank you everyone for trying to help. The problem was I was that I forgot to url encode the query parameter before I sent it to the PHP script.
Related Topics
How to Stop PHP Imagick Auto-Rotating Images Based on Exif 'Orientation' Data
When Do I Use PHP_Eol Instead of \N and Vice-Versa? Ajax/Jquery Client Problem
How to Maintain Session in Curl in PHP
How to Use C++ Binaries from PHP
How to Execute My SQL Query in Codeigniter
Single Session Login in Laravel
Facebook API/PHP - How to Change a User's Profile Image via Fb Graph API
Regex/Domdocument - Match and Replace Text Not in a Link
Get the Price of an Item on Steam Community Market with PHP and Regex
Creating an Image Without Storing It as a Local File
Create New Product Attribute Programmatically in Woocommerce
PHP Soap Client for Uk Mail Webservice API
Automatically Refresh Token Using Google Drive API with PHP Script