2010-07-27 38 views
10

Ok vậy, ngay bây giờ tôi không thể đủ khả năng thanh toán cho bất kỳ dịch vụ nào. Tôi muốn có thể chụp ảnh màn hình bằng máy chủ đã thuê của mình, dựa trên Linux và xuất chúng trên màn hình.Chụp ảnh màn hình trang web, phía máy chủ, trên máy chủ được thuê Linux, miễn phí

Tôi biết có rất nhiều dịch vụ thực hiện việc này, nhưng chúng thường có giới hạn hoặc hình mờ, hoặc bạn phải đợi ảnh chụp màn hình của mình được lấy từ hàng đợi.

Có cách nào để chỉ chụp ảnh màn hình và sau này có thể lưu chúng vào bộ nhớ cache hoặc bất kỳ thứ gì không? Tôi đang sử dụng PHP, nhưng tôi không giới hạn nó; Tôi chỉ trên một máy chủ Linux để các chức năng thích hợp của GD sẽ không hoạt động. Cứu giúp! :)

Trả lời

10

PhantomJs is the solution

if(phantom.state.length === 0){ 
    phantom.state = '0_home'; 
    phantom.open('http://www.mini.de'); 
} 
else if(phantom.state === '0_home'){ 
    phantom.viewportSize = {width: 800, height: 600}; 
    phantom.sleep(2000); 
    phantom.render('home.png'); 
    phantom.exit(0); 
} 
+2

Liên kết rất đẹp, cảm ơn bạn đã chia sẻ! – Kirzilla

+0

những gì về các trang web bằng tiếng Trung và các tập lệnh khác so với chữ La Mã. – Vish

+1

Tôi nghĩ rằng phantomjs sẽ không hoạt động. Nếu webkit có thể hiển thị trang, các phantomj sẽ có thể chụp ảnh màn hình. – cromulus

9

http://cutycapt.sourceforge.net/

CutyCapt là một cross-platform tiện ích dòng lệnh nhỏ để chụp hiển thị một trang web WebKit vào một loạt các định dạng vector và bitmap, bao gồm SVG, PDF, PS, PNG, JPEG, TIFF, GIF và BMP.

Không có PHP-api, nhưng bạn luôn có thể sử dụng nó thông qua các hàm exec của PHP.

+0

Hãy nghĩ rằng tôi có thể chạy nó với một máy chủ lưu trữ? – casraf

+0

Bạn không nghĩ như vậy? – Kirzilla

+0

[Timthumb] (http://code.google.com/p/timthumb/) cung cấp quyền truy cập cutycapt, điều này có thể giúp giải quyết vấn đề "không có PHP-api". – Nick

5

Dưới đây là một kịch bản tốt hơn sử dụng phantomJS 1,5

var page = require('webpage').create(); 

page.open('http://www.google.com', function() { 

    page.viewportSize = {width: 1024, height: 768}; 
    page.render('screenshot.png'); 
    phantom.exit(); 
}); 
+2

Brad: bạn có thể cần PhantomJS 1.5. Trên phiên bản đó, điều này làm việc tốt với tôi. – Husky

+0

Bạn nói đúng .. Điều này sẽ chỉ hoạt động trên phiên bản 1.5 Cảm ơn bạn đã làm rõ. – Brad

1

Một trong những giải pháp năm 2017:

https://github.com/GoogleChrome/puppeteer

dụ:

const puppeteer = require('puppeteer'); 

(async() => { 

const browser = await puppeteer.launch(); 
const page = await browser.newPage(); 
await page.goto('https://example.com'); 
await page.screenshot({path: 'example.png'}); 

browser.close(); 
})(); 
Các vấn đề liên quan