【问题标题】:html2canvas output selected div PHPhtml2canvas 输出选定的 div PHP
【发布时间】:2012-05-28 11:28:43
【问题描述】:

这段代码几乎可以工作
这会将整个页面输出为 jpg
问题:我怎样才能只抓取 '#myDiv' 中的内容并将其输出为 jpg 文件?

JS:

$('.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的参考

【问题讨论】:

    标签: php javascript jquery html2canvas


    【解决方案1】:

    我已经下载并尝试了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());
            }
        });
    });
    

    【讨论】:

    • 只要把 html2canvas.Preload(el, {});
    • 只需点击该块即可
    • 像这样 $('.myButton').click(function(){ html2canvas.Preload(el, {} };
    • 哪个文本?另一个问题?我尝试捕获一个 div 并保存它,我得到一个只有文本的 png 透明图像
    • 我从 css 中获取了背景图片,这很好。但是 div 中的所有文本都丢失了
    【解决方案2】:

    var canvasImg = canvasRecord.toDataURL("image/jpg"); 之后,您可能需要使用var data = canvasImg.replace(/^data:image\/(png|jpg);base64,/, ""); 替换它

    那是 $canvasImg = $_POST['canvasImg']; 而不是 $_POST['img']?

    【讨论】:

    • 你可能应该用 JavaScript 而不是 PHP 来节省几个字节
    • 它的工作原理是抓取整个页面,但我想定位一个 div
    猜你喜欢
    • 2017-06-15
    • 2016-07-29
    • 2021-07-09
    • 1970-01-01
    • 2014-03-14
    • 2013-01-05
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多