Я пытаюсь сохранить холст как изображение на моем сервере, я выполнил это, и сценарий сохраняет файл 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;
?>
Формат по умолчанию для 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