PHP kullanarak web sitesi ekran görüntüleri

16 Cevap php

Bir dosyaya kaydederek, PHP bir web sitesinin bir ekran görüntüsü alarak herhangi bir yolu var mı?

16 Cevap

Sure you can, but you'll need to render the page with something. If you really want to only use php, i suggest you HTMLTOPS, wich render the page and output it in a ps file (ghostscript), then, convert it in a .jpg, .png, .pdf.. can be little slower with complex pages (and dont support all the CSS).

Else, you can use wkhtmltopdf to output a html page in pdf, jpg, whaterver.. Accept CSS2.0, use the webkit (safari's wrapper) to render the page.. so should be fine. You have to install it on your server, as well..

UPDATE Now, with new HTML5 and JS feature, is also possible to render the page into a canvas object using Javascript. Here a nice library to do that: Html2Canvas and here is an implementation by the same author to get a feedback like G+. Once you have rendered the dom into the canvas, you can then send to the server via ajax and save it as a jpg.

EDIT: Sen png pdf dönüştürmek için imagemagick aracını kullanabilirsiniz. Wkhtmltopdf benim sürümü görüntüleri desteklemiyor. Örneğin convert html.pdf -append html.png.

EDIT: This small shell script php5-cli ve yukarıda belirtilen araçları ile linux üzerinde basit / ama çalışma kullanım örneği verir.

EDIT: i wkhtmltopdf takım başka bir proje üzerinde çalıştığını şimdi fark: wkhtmltoimage, bu doğrudan size jpg verir

PHP 5.2.2 beri it is possible, to capture a website with PHP solely!

imagegrabscreen - tüm ekranı yakalar

<?php
$img = imagegrabscreen();
imagepng($img, 'screenshot.png');
?>

imagegrabwindow - Bir pencere kolu (COM örneği HWND özelliği) kullanarak bir pencere ya da istemci alanı Polip

<?php
$Browser = new COM('InternetExplorer.Application');
$Browserhandle = $Browser->HWND;
$Browser->Visible = true;
$Browser->Fullscreen = true;
$Browser->Navigate('http://www.stackoverflow.com');

while($Browser->Busy){
  com_message_pump(4000);
}

$img = imagegrabwindow($Browserhandle, 0);
$Browser->Quit();
imagepng($img, 'screenshot.png');
?>

Edit: Note, these functions are available on Windows systems ONLY!

Bu sizin için iyi olacak:

http://code.google.com/p/wkhtmltopdf/

Emin wkhtmltoimage dağıtımını indirin olun!

Ben bir müşteri için önce bunu yapmak zorunda ve deneyim bunu yapmanın en kolay yollarından biri GrabzIt adlı ücretsiz bir üçüncü taraf hizmeti kullanmaktır. Onlar gerçekten, güvenilir, hızlı ve PHP dahil olmak üzere beş farklı dilde API'leri var.

include("GrabzItClient.class.php");

$grabzIt = new GrabzItClient("APPLICATION KEY", "APPLICATION SECRET");
$id = $grabzIt->TakePicture("http://www.google.com");

//wait a certain amount of time

$result = $grabzIt->GetPicture($id);

if (!$result)
{
return;
}

file_put_contents("images" . DIRECTORY_SEPARATOR . $filename, $result);

Bu Python, ama bu yapılır tam olarak nasıl görebilirsiniz belgeler ve kod üzerinden gidiyor. Eğer Python çalıştırabilirsiniz eğer, o zaman sizin için hazır bir çözüm:

http://browsershots.org/

Her şey tek bir platform, ya da sanal makineler diğer platformlarda çalışan bir makine için bir makine üzerinde çalıştırabilirsiniz unutmayın.

Ücretsiz, açık kaynak, dokümantasyon, kaynak kodu ve diğer bilgilere bağlantılar için sayfanın altındaki gidin.

Evet. Bazı şeyleri Tho gerekir:

See khtmld(aemon) on *nx. See Url2Jpg for Windows but since it is dotNet app you should also chek Url2Bmp

Hem u ekran görüntüsü almak için web uygulamasından yararlanabilirler konsol araçlardır.

Bunu sunan web hizmetleri de vardır. this, örneğin göz atın.

Edit:

Bu link için yararlıdır.

Sen sayfayı kapmak için PhantomJS gibi basit başsız tarayıcıyı kullanabilirsiniz.

Ayrıca PHP ile PhantomJS kullanabilirsiniz.

Bunu yapmak bu küçük php script göz atın. Burada bir göz atın https://github.com/microweber/screen

Ve burada API-http://screen.microweber.com/shot.php?url=http://stackoverflow.com/questions/757675/website-screenshots-using-php olduğunu

Evet öyle. Sadece bu deneyin URL imajını gerekiyorsa

<img src='http://zenithwebtechnologies.com.au/thumbnail.php?url=www.subway.com.au'>

Argüman olarak url geçmek ve daha fazla bilgi bu bağlantıyı kontrol için size görüntü elde edersiniz http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html

cutycapt (jpg, png ..) ve sinaptik indirebilirsiniz, bu wkhtmltopdf daha iyi çalışır çoğu görüntü formatlarını web sayfalarını kaydeder

Doğrudan değil. Böyle Selenyum gibi yazılım bu gibi özelliklere sahip ve PHP ile kontrol edilebilir ama (ekran görüntüsü istiyorum bu tarayıcı ile bilgisayar üzerindeki java tabanlı sunucuyu çalıştıran gibi) diğer dependencys var

Mac OS X ve Linux üzerinde çalışır webkit2html, kurulumu ve kullanımı oldukça basittir. Bkz this tutorial.

Windows için, benzer işlevi vardır ki, CutyCapt ile gidebilirsiniz.

Ben bu yüzden Stephan burada ucu okuduktan sonra imagegrabwindow fonksiyonunu kullanmak mümkün Windows değilim. Ben (Tarayıcı başlığında, kaydırma çubukları, vb kurtulmak için) kırpma ve nihai bir görüntü elde etmek için yeniden boyutlandırma eklendi. İşte my code. O birisi yardımcı olur umarım.

Ben kullanılan bluga. Api ödemeden bir ay 100 fotoğraf çekmek için izin verir, ama bazen tek bir sayfa için fazla 1 kredi kullanır. Ben sadece bir drupal modülü yükseltme bitmiş, Bluga WebThumbs, bir şablon veya giriş filtresinin bir minik yazdırmak için izin veren 7. drupal için.

Bu API kullanmanın ana avantajı size uyarlanabilir css kullanmak durumunda tarayıcı boyutlarını belirtmek için izin verir, bu yüzden mobil ve tablet düzeni gibi normal biri için kaplamalar almak için kullanıyorum olmasıdır.

Aşağıdaki diller için API istemci vardır:

PHP, Python, Ruby, Java, .Net C#, Perl and Bash (the shell script looks like it requires perl)

Bu, tüm ekran görüntüsü almak isteyen nasıl bağlıdır.

Sizin için görüntü almak için bir webcoder kullanarak, PHP ile bu yapabilirdi

grabz.it burada hizmetini kullanarak basit bir örnek gösteren bir makale, sadece bunu yapmak için bir webcoder vardır.

http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html

Ben kullanılan page2images. Gerçekten hızlı ve istikrarlı cutycapt üzerinde tabanı geliştirilmiştir. Eğer performans ve yapılandırma üzerinde çok fazla zaman harcamak istemiyorsanız, bunu kullanmak gerekir. Eğer kendi web sitesine giderseniz, daha fazla ayrıntı ve örnek PHP kodu bulabilirsiniz.

Eğer herhangi bir üçüncü parti araçları kullanmak istemiyorsanız, ben Google Page Insight API kullanarak basit bir çözüm rastlamak var.

Sadece params API bulunuyor aramak gerekir screenshot=true.

https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=www.stackoverflow.com/&key={your_api_key}&screenshot=true

Mobil site görünümü pass için &strategy=mobile params,

https://www.googleapis.com/pagespeedonline/v1/runPagespeed?
url=www.stackoverflow.com/&key={your_api_key}&screenshot=true&strategy=mobile

DEMO.