简体   繁体   English

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

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

I have the following code on my php file which is working fine, Its decoding a base64 string and showing that as a image on the webpage, but i want it to save it on a folder too. 我的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.';
}
?>

i have already tried the solution described on these links but none of these are worked for me 我已经尝试过这些链接上描述的解决方案,但是这些都不适合我

How to save a PNG image server-side, from a base64 data string 如何从base64数据字符串保存PNG图片服务器端

How to create GD Image from base64 encoded jpeg? 如何从base64编码的jpeg创建GD映像?

what will be the extra line of code which could save this image to a folder 可以将这张图片保存到文件夹的多余代码行是什么

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

Well the code worked for me. 代码对我有用。
If you see a blank page, that means the string encoded was incorrect. 如果看到空白页,则表示编码的字符串不正确。

The file permissions was not set to writing mode. 文件权限未设置为写入模式。 set it to 777 and tested with the following code. 将其设置为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.';
}
?>

This code works for JPEG image 此代码适用于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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM