1

这是我正在使用的脚本

<script src="http://code.jquery.com/jquery.min.js"></script> 
<script>window.jQuery||document.write('<script src="js/jquery-1.7.1.min.js"><\/script>');</script>
<script type="text/javascript" src="http://html2canvas.hertzen.com/js/html2canvas.js?rev032"></script> 
<script type="text/javascript">
    var date=new Date();
    var message,timeoutTimer,timer;
    var proxyUrl="http://html2canvas.appspot.com";

    function addRow(a,c,d){var b=$("<tr />").appendTo($(a));b.append($("<td />").css("font-weight","bold").text(c)).append($("<td />").text(d))}

    function throwMessage(b,a){
        window.clearTimeout(timeoutTimer);
        timeoutTimer=window.setTimeout(function(){
            message.fadeOut(function(){message.remove()})
        },
        a||2000);

        $(message).remove();
        message=$("<div />").html(b).css({
            margin:0,
            padding:10,
            background:"#000",
            opacity:0.7,
            position:"fixed",
            top:10,right:10,
            fontFamily:"Tahoma",
            color:"#fff",
            fontSize:12,
            borderRadius:12,
            width:"auto",
            height:"auto",
            textAlign:"center",
            textDecoration:"none"
        }).hide().fadeIn().appendTo("body");
    }

    $(function(){$("#recommended a").click(function(c){
            c.preventDefault();
            $("#url").val(this.href);
            $("button").click()
        });

        var a,b;$('input[type="button"]').click(function(){$(a.contentWindow).unbind("load");$(a).contents().find("body").html2canvas({canvasHeight:b.body.scrollHeight,canvasWidth:b.body.scrollWidth,logging:true})});

        $("#getscreenshot").click(function(d){
            d.preventDefault();
            $(this).prop("disabled",true);
            var c=$("#url").val();
            $("#content").append($("<img />").attr("src","http://html2canvas.hertzen.com/loading.gif").css("margin-top",40));
            var f=document.createElement("a");
            f.href=c;
            $.ajax({
                data:{xhr2:false,url:f.href},url:proxyUrl,dataType:"jsonp",success:function(e){
                    a=document.createElement("iframe");
                    $(a).css({visibility:"hidden"}).width($(window).width()).height($(window).height());
                    $("#content").append(a);
                    b=a.contentWindow.document;
                    b.open();$(a.contentWindow).load(function(){
                        var g=$(a).contents().find("body"),h={onrendered:function(j){
                            $("#content").empty().append(j);
                            $("#getscreenshot").prop("disabled",false);
                            $("base").attr("href","")
                        }, 
                        allowTaint:true,
                        taintTest:false,
                        flashcanvas:"src/flashcanvas.min.js"},
                        i=html2canvas(g,h)
                    });
                    $("base").attr("href",f.protocol+"//"+f.hostname+"/"+f.pathname);
                    e=e.replace("<head>","<head><base href='"+f.protocol+"//"+f.hostname+"/"+f.pathname+"'  />");

                    if($("#disablejs").prop("checked")){
                        e=e.replace(/\<script/gi,"<!--<script");
                        e=e.replace(/\<\/script\>/gi,"<\/script>-->")
                    }
                    b.write(e);b.close()
                }
            });
        })
    });
</script> 

HTML

<h1>Html2Canvas javaScript screenshot creator</h1>
<form class="well form-search"> <label for=url>Website URL:</label> 
    <input type=url id=url value="http://www.google.co.in" class="input-medium search-query"/><button class=btn id=getscreenshot>Get screenshot!</button> 
</form> 
<label for="disablejs">Disable JavaScript (recommended, doesn't work well with the proxy)</label>
<input id="disablejs" type="checkbox" checked="">
<br>
<div id=content></div> <!-- Image will be displayed here-->

现在它正在生成 html 正文内容的屏幕截图

我需要调整图像大小并(存储在/上传到)本地服务器

4

2 回答 2

2

您需要做的是通过使用 ajax 或提交表单将图像的源发送到服务器。要获取源代码,请使用以下内容:

var src = $("#your-image").attr('src');
$.post(url, {'source':src}, function(data){}); 

在php中:

$img = $_POST['source'];
file_put_contents('image_file', base64_decode($img));

尚未测试代码,但应该让您走上正轨。

于 2012-07-20T11:37:12.620 回答
0

这似乎是一个好方法,而不是将图像发送到服务器。我们可以使用 drawImage 方法在另一个画布上绘制图像。

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

sx ---- x 坐标开始剪辑的位置
sy ---- y 坐标开始剪辑的位置
swidth ---- 剪辑图像的宽度
sheight ---- 剪辑图像的高度
x ---- x 坐标 where将图像放置在画布上
y ---- y 坐标 将图像放置在画布上的位置
width ---- 要使用的图像的宽度。
height ---- 要使用的图像的高度。

在画布上绘制后,我们可以使用“ toDataURL ”取回图像源。

 finalImgSrc = mycanvas.toDataURL();

借助这个图像源,我们可以得到图像元素。

于 2014-01-07T11:43:22.013 回答