2014-10-11 74 views
0

一個長鏡頭的位,但有沒有一個JavaScript函數/過程,它允許自動截取指定區域的截圖,並將圖片輸出到我電腦上的文件夾。理想情況下,它可以放在一個循環中,以便爲每個循環迭代拍攝一張照片。是否有可能得到JavaScript截圖?

這完全是遠程可能的嗎?

+1

它將需要是佈局引擎可以做的事情,並已公開爲JavaScript API。我嚴重懷疑目前的瀏覽器甚至可以做到這一點。 – Anthony 2014-10-11 01:55:13

+0

不是我所知道的。這需要訪問JavaScript沒有的客戶端文件系統。即使它確實如此,JavaScript也無法像您提到的那樣捕獲屏幕。 – xaragen 2014-10-11 02:00:07

+0

http://stackoverflow.com/questions/4912092/using-html5-canvas-javascript-to-take-screenshots + http://html2canvas.hertzen.com/,但只發送給服務器,它不能保存它到本地文件系統。 – Cheery 2014-10-11 02:01:14

回答

1

如果您有安裝了PHP的Web服務器,則可以使用wkhtmltoimage來模擬此操作。爲了產生每5秒一個新的文件,你的JS是:

$(document).ready(function() { 
    function takeImage() { 
     $.post(
      'htmltoimage.php', 
      { currentUrl : window.location + "?stopTimer=1" }, // data that your script might need 
      function(data) { 
       if (data.url !== undefined) { 
        console.log("The URL where you can download your image is " + data.url); 
       } 
      }, 
      'json' // use JSON for expected return type 
     ); 
    } 
    var startTimer = <?php echo (isset($_POST['stopTimer']) ? "false" : "true"); ?> 
    if (startTimer) { setTimeout(takeImage, 5000); } 
}); 

你的PHP文件會簡單地使用wkhtmltoimage去你的網址。在其最簡單的形式:

<?php 
    function() { 
     $outputLocation = "/images/output_" . strtotime(date()) . ".png"; 
     // assuming wkhtmltoimage is in your PATH (otherwise specify full path to executable below) 
     `wkhtmltoimage $_POST['currentUrl'] $outputLocation`; 
     return array('url' => $outputLocation); 
    } 
?> 

然後你可以在你的願望使用ImageMagick或者類似PHP圖像處理庫的位置裁剪。

這也可以使用Adobe AIR或任何使用WebKit的程序來實現。

1

是的,你可以。這是一個有用的庫。你可能想看一看:

http://phantomjs.org/screen-capture.html

由於PhantomJS使用的WebKit,一個真正的佈局和渲染引擎,它 可以捕捉網頁作爲截圖。由於PhantomJS可以在網頁上呈現任何東西,所以它不僅可以在HTML和CSS中轉換內容 ,還可以用於轉換SVG和Canvas中的內容 。

希望它有幫助。

相關問題