【发布时间】:2023-03-26 16:43:01
【问题描述】:
我在 PHP 中保存画布图像时遇到问题。我得到一个空白的.png 文件。我搜索了很多有关此问题的信息,但找不到任何有用的信息。为什么会保存空白图片而不是渲染真实图片?
JavaScript 代码:
html2canvas([document.getElementById('dadycool')], {
onrendered: function (canvas) {
var data = canvas.toDataURL();
var image = new Image();
image.src = data;
document.getElementById('imagec').appendChild(image);
console.log(data);
$.ajax({
type: "POST",
url: "up.php",
data: {
imgBase64: data
}
}).done(function(o) {
console.log('saved');
});
}
PHP 代码:
<?php
// requires php5
define('localhost/samp/sample2/uploads', 'images/');
$img = $_POST['imgBase64'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = localhost/samp/sample2/uploads . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
【问题讨论】:
-
默认情况下,据我所知,toDataUrl返回png图片,
$img = str_replace('data:image/jpg;base64,', '', $img);应该是$img = str_replace('data:image/png;base64,', '', $img); -
是的!我忘了写我的代码的更新版本 :D 但我的问题仍然存在。
-
您可以将PHP部分替换为PHP-FileUpload及其
DataUriUpload组件,如documented here。它也处理其他事情,例如文件大小限制和多种可接受的 MIME 类型。
标签: javascript php html ajax canvas