I'm using the Google Charts API to generate some charts and am using an ajax request to send that data to an endpoint that will save the image to disk for use in a PDF. However, I'm not sure how to get the image string into a PHP image resource.
It looks something like this (I'll snip a bunch of the code to save some room):
<?php
$data = '{"image_data":"data:image/png;base64,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"}';
$decoded = json_decode($data, true);
$resource = imagecreatefromstring($decoded['image_data']);
var_dump($resource);
This throws a warning at the imagecreatefromstring step: Warning: imagecreatefromstring(): Data is not in a recognized format.
What's the right handler for that image format?
This is because your need to get rid of leading data:image/png;base64,
Also your base64 string looks corrupted . I did the following
<?php
$data = '{"image_data":"data:image/png;base64,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"}';
$decoded = json_decode($data, true);
$final = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $decoded['image_data']));
$im = imagecreatefromstring($final);
if ($im !== false) {
ob_clean();
header('Content-type: image/png');
imagesavealpha($im, true);
imagepng($im);
imagedestroy($im);
}
?>
working fiddle
http://phpfiddle.org/main/code/7u1t-yfbe
Related
I am using sqlserver as backend server in that we have "image" datatype
image store as following manner
2nd comment of hex Oxffd is the jpg extension
*Above code is in **IMAGE DATA TYPE itsnot varbinary or binary.***
and we are trying to fecth this data via php and wants to display as image
but got following code as result of the select query "select mainpic from
mytable where id=1"
$url =http://rku.ac.in/library/webopac/photo.php
We are trying to generate image in php
<?php
$data=file_get_contents($url);
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/jpeg');
imagejpg($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>
I'm using jSignature to take on my web site the signature of a client in a form.
Then, when the submit button in a form is clicked, I get the signature in svg64 format and then I pass it with post to a php page.
Here all works, but now I have to convert the string that refers to the svg image into an image that I can put into an Excel file (also this automatically in php).
This is an example of the svg that I have to converter
image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzc1IiBoZWlnaHQ9IjM4Ij48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJNIDEgMSBjIDAuOTggMC4wMyAzNi43MyAwLjg4IDU2IDIgYyAxNi4yMiAwLjk1IDMwLjk2IDMuMDYgNDcgNCBjIDcuMTQgMC40MiAxMy45OSAtMC40IDIxIDAgYyA0LjcyIDAuMjcgOS4yMSAxLjcyIDE0IDIgYyAzMC4xNyAxLjc2IDU4LjQ3IDIuMDggODkgNCBjIDEzLjA5IDAuODIgMjQuOTIgMi45MSAzOCA0IGMgNy41NCAwLjYzIDE1LjI5IC0wLjA4IDIyIDEgYyAzIDAuNDggNS45MiAzLjAyIDkgNCBjIDQuMTggMS4zMyA4LjU3IDIuMzEgMTMgMyBjIDYuMzUgMC45OSAxMi42OCAwLjg0IDE5IDIgYyAxMC4xOCAxLjg3IDIwLjE5IDUuMDkgMzAgNyBjIDEuOTEgMC4zNyA0LjE1IC0wLjM3IDYgMCBsIDkgMyIvPjwvc3ZnPg==
How can I do? Is possibile to obtain an Image that could be automatically saved in an Excel file?
At least, I solved it using this
//Acquisizione dati dal form
$name = $_POST['name'];
echo "$name";
$signature = $_POST['signature_value'];
$data = str_replace('data:image/png;base64,', '' , $signature);
$data = base64_decode($data);
$output_file="$name.png";
$im = imagecreatefromstring($data);
if ($im !== false) {
imagealphablending($im, false);
imagesavealpha($im, true);
//header('Content-Type: image/png'); รจ superfluo, siccome l'immagine non viene mostrata qua
imagepng($im, $output_file );
//imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
I am trying to convert a webp file to JPEG using imagecreatefromwebp() but unfortunately, it throws me a warning: Warning: imagecreatefromwebp(): WebP decode: fail to decode input data.
Here's my code
$filename = dirname(__FILE__)."\\".$keyword."1.webp"; // $keyword = 'xyz';
$im = imagecreatefromwebp($filename);
// Convert it to a jpeg file with 100% quality
imagejpeg($im, './example.jpeg', 100);
imagedestroy($im);
Please help.
i am using this code, it works fine for me. Here $data contains the base64encoded data
$im = imagecreatefromwebp($data);
$imageResult = imagejpeg($im, $destinationPath . $fileName, 100);
imagedestroy($im);
The imagecreatefromwebp() function accepts either a valid file or URL. You can also pass the your binary data in that function. You can check the function definition and example here http://php.net/manual/en/function.imagecreatefromwebp.php
Want to take image from own server rotate certain angle and save the image.
Image file $filename = 'kitten_rotated.jpg'; With echo '<img src='.$filename.'>'; i see the image.
Then
$original = imagecreatefromjpeg($filename);
$angle = 90.0;
$rotated = imagerotate($original, $angle, 0);
Based on this https://stackoverflow.com/a/3693075/2118559 answer trying create image file
$output = 'google.com.jpg';
If i save the same image with new file name, all works
file_put_contents( $output, file_get_contents($filename) );
But if i try to save rotated image, then file_put_contents(): supplied resource is not a valid stream resource.
file_put_contents( $output, $rotated );
Here https://stackoverflow.com/a/12185462/2118559 read $export is going to be a GD image handle. It is NOT something you can simply dump out to a file and expect to get a JPG or PNG image.. but can not understand how to use the code in that answer.
How to create image file from $rotated?
Tried to experiment, based on this http://php.net/manual/en/function.imagecreatefromstring.php
$fh = fopen( 'some_name.png' , 'w') or die("can't open file");
fwrite($fh, $data );
fclose($fh);
Does it means that need something like
$data = base64_encode($rotated);
And then write in new file?
I have not tested this, but I think you need to encode the image as base 64 first.
If you check the string from any Image URL, you'd see data:image/png;base64, preceding the hash. Prepending this to your image string and saving.
Here is a function that may help, based on what you already have:
// Function settings:
// 1) Original file
// 2) Angle to rotate
// 3) Output destination (false will output to browser)
function RotateJpg($filename = '',$angle = 0,$savename = false)
{
// Your original file
$original = imagecreatefromjpeg($filename);
// Rotate
$rotated = imagerotate($original, $angle, 0);
// If you have no destination, save to browser
if($savename == false) {
header('Content-Type: image/jpeg');
imagejpeg($rotated);
}
else
// Save to a directory with a new filename
imagejpeg($rotated,$savename);
// Standard destroy command
imagedestroy($rotated);
}
// Base image
$filename = 'http://upload.wikimedia.org/wikipedia/commons/b/b4/JPEG_example_JPG_RIP_100.jpg';
// Destination, including document root (you may have a defined root to use)
$saveto = $_SERVER['DOCUMENT_ROOT']."/images/test.jpg";
// Apply function
RotateJpg($filename,90,$saveto);
If you want to save image just use one of GD library functions: imagepng() or imagepng().
imagerotate() returns image resource so this is not something like string.
In your case just save rotate image:
imagejpg($rotated, $output);
And now You can use $output variable as your new filename to include in view like before:
echo '<img src='.$output.'>';
Don't forget to include appropriate permissions in directory where You're saveing image.
I am connecting to Active-Directory and getting the thumbnailPhoto attribute successfully.
I have stored the file in the DB using Base64 encoding which makes the result look like:
/9j/4AAQSkZJRgABAQEAYABgAAD/4RHoRXhpZgAATU0AKgAAAAgABQEyAAIAAAAUAA ...
(Full Base64 encoded string: http://pastebin.com/zn2wDEmd)
Using a simple Base64 Decoder and decoding the string into a binary file and rename that to jpeg and open with an image viewer (here: Irfan View) I get the correct picture - see yourself:
How do I achieve this through PHP - I have tried using:
<?php
$data = '/9j/4A...'; //The entire base64 string - gives an error in dreamweaver
$data = base64_decode($data);
$fileTmp = imagecreatefromstring($data);
$newImage = imagecreatefromjpeg($fileTmp);
if (!$newImage) {
echo("<img src=".$newImage."/>");
}
?>
I'm just getting a blank page!
Your problem is that imagecreatefromstring() doesn't return a file, but rather an image in memory that should be output with the correct headers.
$data = base64_decode($data);
// Create image resource from your data string
$imgdata = imagecreatefromstring($data);
if ($imgdata) {
// Send JPEG headers
header("Content-type: image/jpeg");
// Output the image data
imagejpeg($imgdata);
// Clean up the resource
imagedestroy($imgdata);
exit();
}