Как преобразовать base64 в изображение (холст) и сохранить его в путь к папке с помощью php?

#javascript #php #html #base64

#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);
 

Ответ №1:

В моем коде я использовал это, и это сработало:

$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. пожалуйста, я просто новичок в html, мне нужен полный скрипт ‘-‘

2. извините, я использую только этот код в своем проекте для загрузки изображения с использованием base64, и он работал … не в состоянии предоставить вам весь код проекта

Ответ №2:

Все, что вам нужно сделать, это передать данные вашего изображения в файл 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 или что-то в этом роде, но вы поняли идею.