2012-05-27 4 views
2

этот код работает почти
этот вывод будет все страницы в JPG
вопрос: как я могу захватить только содержание внутри '#myDiv' и вывод, что в JPG файл?

JS:выход html2canvas выбран ДИВ PHP

$('.myButton').click(function(){ 
    $('#myDiv').html2canvas();//<< has no effect 
    var queue = html2canvas.Parse(); 
    var canvas = html2canvas.Renderer(queue,{elements:{length:0}}); 
    var img = canvas.toDataURL(); 
    img.replace(/^data:image\/(png|jpg);base64,/, ""); 
    $.post("postIO.php", {img:img}, function(data) { 
     //$('#recieve').append(data); 
    }); 
    return false; 
}); 

postIO.php:

$canvasImg = $_POST['img'];  
//$canvasImg = str_replace('data:image/png;base64,', '', $canvasImg); 

$data = base64_decode($canvasImg); 
$File = "z.jpg"; 
$Handle = fopen($File, 'w'); 
fwrite($Handle, $data); 
fclose($Handle); 

ссылка из here

+0

Есть ли у вас какие-либо ошибки? –

ответ

3

У меня есть загрузка и попытка html2canvas, после чего я выясню, что плагин jquery не завершен (он не делает ничего, кроме захвата изображения и создания холста, бесполезно), поэтому я сам записываю код захвата.

var el = $('div').get(0); 

function saveData(dturl){ 
    //Upload here 
    console.debug(dturl); 
} 

html2canvas.Preload(el, { 
    complete: function(image){ 
     var queue = html2canvas.Parse(el, image, {elements: el}), 
      $canvas = $(html2canvas.Renderer(queue, {elements: el})); 
     saveData($canvas[0].toDataURL()); 
    } 
}); 

Надеется, что это поможет вам

так, чтобы использовать с программой вы должны написать

function saveData(dturl){ 
    dturl.replace(/^data:image\/(png|jpg);base64,/, ""); 
    $.post("postIO.php", {img:dturl}, function(data) { 
     //$('#recieve').append(data); 
    }); 
} 

$('.myButton').click(function(){ 
    var el = $('#myDiv').get(0); 
    html2canvas.Preload(el, { 
     complete: function(image){ 
      var queue = html2canvas.Parse(el, image, {elements: el}), 
       $canvas = $(html2canvas.Renderer(queue, {elements: el})); 
      saveData($canvas[0].toDataURL()); 
     } 
    }); 
}); 
+0

им жаль, это была опечатка –

+0

Hey t_q, попробуйте мой новый код –

+0

просто поместите html2canvas.Preload (el, {}); –

1

после var canvasImg = canvasRecord.toDataURL("image/jpg");, вам, возможно, придется заменить его с помощью var data = canvasImg.replace(/^data:image\/(png|jpg);base64,/, "");

и что $canvasImg = $_POST['canvasImg']; вместо $ _ POST [ 'IMG']?

+0

Я повторно отредактировал вопрос после некоторых поисков и испытаний –

+0

, вы должны, вероятно, сделать это в JavaScript вместо PHP, чтобы сэкономить пару байтов – gengkev

+0

и не должно ли это работать сейчас? – gengkev