如何将base64转换为image(canvas)并使用php将其保存到文件夹路径?

时间:2019-04-15 06:46:27

标签: javascript php html base64

我对如何将base64上载到文件夹路径感到困惑。这是我的代码:

var img = document.createElement('img') || document.querySelector('img');
var context;
var width = video.offsetWidth
        , height = video.offsetHeight;

canvas = canvas || document.createElement('canvas');
canvas.width = width;
canvas.height = height;

context = canvas.getContext('2d');
context.drawImage(video, 0, 0, width, height);

img.src = canvas.toDataURL('image/png');
document.body.appendChild(img);

2 个答案:

答案 0 :(得分:0)

在我的代码中,我使用了它并且有效:

$picture = rtrim(strtr(base64_encode($_FILES['userfile']['name']), '+/', '-_'), '=');

查看:

img src=" echo base_url(). 'admin/assets/uploads/product/'.$product['userfile'];" alt="img" class = "img-thumbnail rounded float-left image-product"

答案 1 :(得分:0)

您要做的就是将图像数据传递到PHP文件,以通过此功能base64_decode($data);对其进行解码,将数据保存到图像中,$data是您的图像数据。

您可以通过将数据存储在HTML的隐藏输入中来传递数据

首先,进行隐藏的输入:

<form name="myForm" id="myForm" method="post" action="">
   <input name="hidden_data" id='hidden_data' type="hidden"/>
</form>`


然后通过此js代码

将图像数据存储到其中
document.getElementById('hidden_data').value = canvas.toDataURL('image/png');

在这里您可以通过提交表单数据将此数据传递给PHP

var form = document.getElementById("myForm");
form.submit();

在PHP中,您可以通过首先解码图像base64数据来保存文件:

if(isset($_POST['hidden_data']){
    $img = $_POST['hidden_data'];

    //Extracting the base64 data from the passed string
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);

    //Decoding the image data 
    $data = base64_decode($img);

    //Choosing file name based on current time (unique name)
    $fileName = mktime() . ".png";

    $upload_dir = "./MyImages";
    $file = $upload_dir . $fileName;

    $success = file_put_contents($file, $data);
    if($success){
      echo "Image Saved";
    }else{
      echo "Couldn't Save Image";
    }
}

您可以选择另一种传递数据的方式,例如AJAX GET请求或其他方法,但是您知道了。