Изображение, сохраненное на сервере, выглядит пустым

0

Я пытаюсь сохранить холст как изображение на моем сервере, я выполнил это, и сценарий сохраняет файл jpeg, и размер файла (так что что-то в нем), однако, когда я его просматриваю, он отображается как черный фон без картинки на нем, кто-нибудь есть идея, что я делаю неправильно?

document.getElementById('rasterize').onclick = function (){     
            var image = canvas.toDataURL();                     
            var xmlHttpReq = false;       
            if (window.XMLHttpRequest) {
                ajax = new XMLHttpRequest();
            }

            else if (window.ActiveXObject) {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
           ajax.open('POST', 'save3.php', false);
           ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
           ajax.onreadystatechange = function() {
                console.log(ajax.responseText);
            }
           ajax.send("imgData="+image);

        }; 

PHP

  <?php

define('UPLOAD_DIR', 'images/');
$data = $_POST['imgData'];

$file = UPLOAD_DIR . uniqid() . '.jpeg';

$uri =  substr($data,strpos($data,",")+1);

file_put_contents($file, base64_decode($uri));

echo $file;
?>
Теги:
html5-canvas
fabricjs

1 ответ

0

Формат по умолчанию для toDataURL() - это image/png. Если ваш php-скрипт ожидает jpg-образ, вам нужно указать его с помощью toDataUrl('image/jpeg', 0.8) где 0.8 - ваше качество изображения.

var image = canvas.toDataURL(); //outputs png

против

var image = canvas.toDataURL('image/jpeg', 0.8); //outputs jpeg
  • 0
    Я уже пробовал формат по умолчанию, изменив PHP и скрипт на png, но это приводит к тому же самому изображению с черным фоном.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню