web-dev-qa-db-ja.com

JavaScriptを使用してHTMLでスクリーンショットを撮る方法は?

私はhtmlとjavascriptの初心者です。そして、HTMLページのスクリーンショットを撮り、jpgまたはpngファイルとして保存しようとしています。

これが私のhtml画像です enter image description here

画像の右隅にある[画像保存]ボタンを押してdivsをドラッグアンドドロップし、右側のスクリーンショット(グレーの色)を撮りたいです。

HTMLとjavascriptでスクリーンショットを撮るにはどうすればよいですか? html2canvasのいくつかを見ましたが、それは私が望むものではありません。おもう..

誰かがこれについて考えていますか?

おかげで、

追伸htmlのコードが必要な場合、[〜#〜] edit [〜#〜]

5
paulc1111

Canvasを使用して、画像またはビデオフレームをスクリーンショットとしてのみキャプチャできます。ただし、Webページ上の特定の要素をキャプチャする場合は、このライブラリを試してください: html2canvas

コードは次のとおりです。

注:drawImage()関数で寸法を慎重に調整してください

$(".drag").draggable();
$(".drag").droppable();
var takeScreenShot = function() {
    html2canvas(document.getElementById("container"), {
        onrendered: function (canvas) {
            var tempcanvas=document.createElement('canvas');
            tempcanvas.width=350;
            tempcanvas.height=350;
            var context=tempcanvas.getContext('2d');
            context.drawImage(canvas,112,0,288,200,0,0,350,350);
            var link=document.createElement("a");
            link.href=tempcanvas.toDataURL('image/jpg');   //function blocks CORS
            link.download = 'screenshot.jpg';
            link.click();
        }
    });
}
#container{
    width:400px;
    height:200px;
}
#rightcontainer{
    width:300px;
    height:200px;
    background:gray;
    color:#fff;
    margin-left:110px;
    padding:10px;
}
#leftmenu{
    color:#fff;
    background-color:green;
    width:100px;
    height:200px;
    position:fixed;
    left:0;
    padding:10px;
}

button{
    display:block;
    height:20px;
    margin-top:10px;
    margin-bottom:10px;
}
.drag{
  width:40px;
  height:20px;
  background-color:blue;
  z-index:100000;
  margin-top:10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
  
  
<button onclick="takeScreenShot()">Snapshot</button>
<div id="container">
    <div id="leftmenu">
      Left Side
      <div class="drag">
      </div>
      <div class="drag">
      </div>
      <div class="drag">
      </div>
      Drag----------->
            &
      Click Snapshot
    </div>
    <div id="rightcontainer">
        Right Side
    </div>
</div>
15