如何使用 PHP 从 base64 编码数据/字符串创建图像并将其保存到网站文件夹


How to create and save image to a website folder from a base64 encoded data/string using PHP

我的php文件上有以下代码,工作正常,它解码了一个base64字符串并将其显示为网页上的图像,但我希望它也将其保存在文件夹中。

<?php
$base = $_POST['encoded'];
$base = base64_decode($base);
$im = imagecreatefromstring($base);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}
else {
    echo 'An error occurred.';
}
?>

我已经尝试了这些链接上描述的解决方案,但这些都不适合我

如何从 base64 数据字符串在服务器端保存 PNG 图像

如何从base64编码的jpeg创建GD图像?

可以将此图像保存到文件夹中的额外代码行是什么

$base = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       .'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       .'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       .'8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$base = base64_decode($base);
$im = imagecreatefromstring($base);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}
else {
    echo 'An error occurred.';
}

好吧,代码对我有用.
如果看到空白页,则表示编码的字符串不正确。

文件权限未设置为写入模式。 将其设置为 777 并使用以下代码进行测试。

<?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.';
}
?>

此代码适用于 JPEG 图像

$data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHB'; // image data 
define('UPLOAD_DIR','dir_path/'); // image dir path
list($type, $data) = explode(';', $data); 
list(, $data)      = explode(',', $data);
$data = str_replace(' ', '+', $data);
$data = base64_decode($data); // base 64 decoding 
file_put_contents(UPLOAD_DIR.$img_name.".jpeg", $data); // saving the image to required path