Начиная с чистого холста:
<canvas id='myCanvas' width='800' height='600'></canvas>
Затем инициализируем этот холст:
function init_canvas(){
var canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
context.lineCap = 'round';
// fill it with white background
context.save();
context.fillStyle = '#fff';
context.fillRect(0, 0, context.canvas.width, context.canvas.height);
context.restore();
return;
}
Затем сделайте несколько рисунков на холсте.
Затем попытайтесь сохранить его на сервере, используя ajax и PHP на сервере.
На клиенте:
var img = canvas.toDataURL('image/png');
// strip the leading garbage.
img.substr(img.indexOf(',')+1).toString();
Возьмем результирующую строку, которая закодирована в формате base64 png, непосредственно в PHP и и base64_decode () в строку ... Изображение всегда имеет правильный размер, но на нем нет рисунка - только прозрачное изображение. Похоже, что это не проблема с base64_decode () в PHP, это похоже на проблему безопасности или что-то в этом роде. Он не работает как в Firefox 4, так и в последней версии Chrome.
Вывод полученного png-изображения в firefox с заголовками «image / png» выдает это в консоли ошибок:
Error: Image corrupt or truncated: http://somewhere.com/showimage.php
Source file: http://somewhere.com/showimage.php
Но ... Изображение не повреждено и не усечено, что я могу сказать, если toDataURL () не повсеместно поврежден, потому что php просто base64_decode () результат toDataURL ().
Есть идеи?
Спасибо!