html2canvas 0.4.0 でスクリーンショットをレンダリングしており、Web サーバーに画像として保存したいと考えています。
そのために、次の関数を作成しました。
JavaScript
function screenShot(id) {
html2canvas(id, {
proxy: "https://html2canvas.appspot.com/query",
onrendered: function(canvas) {
$('body').append(canvas); // This works perfect...
var img = canvas.toDataURL("image/png");
var output = img.replace(/^data:image\/(png|jpg);base64,/, "");
var Parameters = "image=" + output + "&filedir=" + cur_path;
$.ajax({
type: "POST",
url: "inc/saveJPG.php",
data: Parameters,
success : function(data)
{
console.log(data);
}
}).done(function() {
});
}
});
}
saveJPG.php
<?php
$image = $_POST['image'];
$filedir = $_POST['filedir'];
$name = time();
$decoded = base64_decode($image);
file_put_contents($filedir . "/" . $name . ".png", $decoded, LOCK_EX);
echo $name;
?>
キャンバスがレンダリングされた後、HTML 本文に完全に追加できますが、サーバーに保存すると (?) ファイルが破損します。
IrvanView で寸法を読み取ることはできますが、画像が透明/空になっていますか? ファイルのサイズは約 2.076 KB です。だから本当に空じゃない。
JPEG でもこれを試してみたところ、ファイルが破損し、IrfanView は「偽のマーカーの長さ」のようなことを言います。
スクリーンショットのサイズは 650x9633 です。POST メソッドのデータが多すぎますか?