Tôi gặp sự cố khi lưu hình ảnh canvas trong PHP. Tôi nhận được tệp .png
trống. Tôi tìm kiếm rất nhiều về vấn đề này nhưng không thể tìm thấy bất cứ điều gì hữu ích về việc này. Tại sao nó lưu hình ảnh trống thay vì hiển thị hình ảnh thực? đangkhi lưu hình ảnh máy chủ phía máy chủ, từ chuỗi dữ liệu base64, nó tạo ra hình ảnh trống
JavaScript: Mã
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.';
?>
Theo mặc định, như xa tôi như bí quyết, toDataUrl trả về png, ' $ img = str_replace ('dữ liệu: hình ảnh/jpg; base64,', '', $ img); 'phải là' $ img = str_replace ('dữ liệu: hình ảnh/png; base64,', '', $ img); ' –
có quyền !! Tôi quên viết phiên bản cập nhật mã của mình: D nhưng vấn đề của tôi vẫn tồn tại. – mkafiyan
Bạn có thể thay thế phần PHP bằng [PHP-FileUpload] (https://github.com/delight-im/PHP-FileUpload) và ['DataUriUpload'] của nó (https://github.com/delight-im/ Thành phần PHP-FileUpload/blob/d0065c47dcda18c4965ed900bb15190f7af30e79/src/DataUriUpload.php), như [tài liệu ở đây] (https://github.com/delight-im/PHP-FileUpload/tree/d0065c47dcda18c4965ed900bb15190f7af30e79#data-uri-uploads). Nó cũng quan tâm đến những thứ khác, chẳng hạn như giới hạn kích thước tệp và nhiều loại MIME được chấp nhận. – caw