Apakah ada cara untuk mengambil tangkapan layar situs web dalam PHP, lalu menyimpannya ke file?
php
screenshot
Paolo Forgia
sumber
sumber
Jawaban:
EDIT TERAKHIR : setelah 7 tahun saya masih mendapatkan upvotes untuk jawaban ini, tapi saya kira yang ini sekarang jauh lebih akurat.
Tentu Anda bisa, tetapi Anda harus membuat halaman dengan sesuatu. Jika Anda benar-benar hanya ingin menggunakan php, saya sarankan Anda HTMLTOPS , yang merender halaman dan menampilkannya dalam file ps (ghostscript), kemudian, konversikan ke dalam .jpg, .png, .pdf .. bisa menjadi sedikit lebih lambat dengan halaman kompleks (dan tidak mendukung semua CSS).
Selain itu, Anda dapat menggunakan wkhtmltopdf untuk menghasilkan halaman html di pdf, jpg, apa pun .. Terima CSS2.0, gunakan webkit (pembungkus safari) untuk membuat halaman .. jadi harus baik-baik saja. Anda harus menginstalnya di server Anda, juga ..
PEMBARUAN Sekarang, dengan fitur HTML5 dan JS baru, juga memungkinkan untuk merender halaman menjadi objek kanvas menggunakan JavaScript. Berikut pustaka yang bagus untuk melakukannya: Html2Canvas dan di sini adalah implementasi oleh penulis yang sama untuk mendapatkan umpan balik seperti G +. Setelah Anda merender dom ke kanvas, Anda dapat mengirim ke server melalui ajax dan menyimpannya sebagai jpg.
EDIT : Anda dapat menggunakan alat imagemagick untuk mengubah pdf ke png. Versi wkhtmltopdf saya tidak mendukung gambar. Misalnya
convert html.pdf -append html.png
.EDIT : Script shell kecil ini memberikan contoh penggunaan sederhana / tetapi berfungsi di linux dengan php5-cli dan alat-alat yang disebutkan di atas.
EDIT : saya perhatikan sekarang bahwa tim wkhtmltopdf sedang mengerjakan proyek lain: wkhtmltoimage, yang memberi Anda jpg secara langsung
sumber
Karena PHP 5.2.2 dimungkinkan, untuk menangkap situs web dengan PHP semata-mata !
Sunting: Catatan, fungsi-fungsi ini HANYA tersedia pada sistem Windows!
sumber
Jika Anda tidak ingin menggunakan alat pihak ketiga, saya telah menemukan solusi sederhana yang menggunakan api Google Page Insight .
Hanya perlu menyebutnya api dengan params
screenshot=true
.Untuk parade tampilan situs seluler
&strategy=mobile
,DEMO .
sumber
Anda dapat menggunakan browser tanpa kepala sederhana seperti PhantomJS untuk mengambil halaman.
Anda juga dapat menggunakan PhantomJS dengan PHP.
Lihatlah skrip php kecil ini yang melakukan ini. Lihatlah di sini https://github.com/microweber/screen
Dan di sini adalah API- http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
sumber
Ini seharusnya baik untuk Anda:
https://wkhtmltopdf.org/
Pastikan Anda mengunduh distribusi wkhtmltoimage!
sumber
Iya. Anda akan memerlukan beberapa hal:
Lihat khtmld (aemon) di * nx. Lihat Url2Jpg untuk Windows tetapi karena ini adalah aplikasi dotNet Anda juga harus chek Url2Bmp
Keduanya adalah alat konsol yang dapat Anda manfaatkan dari aplikasi web Anda untuk mendapatkan tangkapan layar.
Ada juga layanan web yang menawarkannya. Lihat ini sebagai contoh.
Edit:
Ini link yang berguna untuk.
sumber
Ini menggunakan Python, tetapi mempelajari dokumentasi dan kode Anda dapat melihat persis bagaimana ini dilakukan. Jika Anda dapat menjalankan python, maka itu solusi siap pakai untuk Anda:
http://browsershots.org/
Perhatikan bahwa semuanya dapat berjalan pada satu mesin untuk satu platform, atau satu mesin dengan mesin virtual yang menjalankan platform lainnya.
Gratis, sumber terbuka, gulir ke bawah halaman untuk tautan ke dokumentasi, kode sumber, dan informasi lainnya.
sumber
Ya itu. Jika Anda hanya perlu gambar URL coba ini
Lewati url sebagai argumen dan Anda akan mendapatkan gambar untuk lebih jelasnya periksa tautan ini http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
sumber
Nah, PhantomJS adalah browser yang bisa dengan mudah diletakkan di server dan mengintegrasikannya ke php. Anda dapat menemukan kode di WDudes. Mereka telah memasukkan lebih banyak fitur seperti menentukan ukuran gambar, cache, unduh sebagai file atau tampilan di img src dll.
Parameter URL
Lebar dan Tinggi: tangkapan layar.php? Url = google.com & w = 1000 & h = 800
Dengan memotong: tangkapan layar.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Nonaktifkan cache dan muat screesnhot segar:
tangkapan layar.php ? Url = google.com & cache = 0
Untuk mengunduh gambar: tangkapan layar.php? Url = google.com & unduh = true
Anda dapat melihat tutorialnya di sini: Tangkap Cuplikan Layar Situs Web menggunakan PHP tanpa API
sumber
cutycapt menyimpan halaman web ke sebagian besar format gambar (jpg, png ..) unduh dari sinaptik Anda, ini bekerja jauh lebih baik daripada wkhtmltopdf
sumber
Saya selalu menggunakan layar microweber untuk menangkap tangkapan layar halaman web apa pun. Di sini kita dapat menemukan tutorial yang ditulis dengan baik . Ini lebih mudah dan tidak perlu lebih dari 3 menit untuk belajar.
sumber
Saya mengatur akhirnya menggunakan microweber / layar seperti yang diusulkan oleh @boksiora.
Awalnya ketika mencoba tautan yang disebutkan di sini, apa yang saya dapatkan:
Saya di Linux. Jadi jika Anda ingin menjalankannya, Anda dapat menyesuaikan langkah saya mengikuti lingkungan Anda.
Berikut langkah yang saya lakukan pada shell di
DOCUMENT_ROOT
folder:Arahkan browser Anda ke
screen/demo/shot.php?url=google.com
. Ketika Anda melihat tangkapan layar , Anda selesai. Diskusi untuk pengaturan lebih lanjut tersedia di sini dan di sini .sumber
Ada banyak proyek open source yang dapat menghasilkan tangkapan layar. Misalnya PhantomJS, webkit2png dll
Masalah besar dengan proyek-proyek ini adalah bahwa mereka didasarkan pada teknologi browser yang lebih tua dan memiliki masalah dalam merender banyak situs, terutama situs yang menggunakan webfonts, flexbox, svg dan berbagai tambahan lainnya pada spesifikasi HTML5 dan CSS selama beberapa bulan / tahun terakhir.
Saya sudah mencoba beberapa layanan pihak ketiga, dan sebagian besar didasarkan pada PhantomJS, yang berarti mereka juga menghasilkan tangkapan layar berkualitas buruk. Layanan pihak ketiga terbaik untuk menghasilkan tangkapan layar situs web adalah urlbox.io . Ini adalah layanan berbayar, meskipun ada uji coba 7 hari gratis untuk mengujinya tanpa melakukan rencana pembayaran.
Berikut ini tautan ke dokumentasi , dan di bawah ini adalah langkah-langkah sederhana untuk membuatnya bekerja dalam PHP dengan komposer.
Untuk misalnya, inilah tangkapan layar ketinggian penuh dari halaman ini:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2%%%%%%%%%% dengan https://www.facebook.com/?hl=id 2F43652083% 2343652083 & full_page = true
sumber
Ada banyak pilihan dan mereka semua memiliki pro dan kontra. Berikut adalah daftar opsi yang dipesan oleh kesulitan implementasi.
Opsi 1: Gunakan API (yang termudah)
Pro
Cons
Opsi 2: Gunakan salah satu dari banyak perpustakaan yang tersedia
Pro
Cons
Opsi 3: Gunakan PhantomJs dan mungkin pustaka pembungkus
Pro
Cons
Opsi 4: Gunakan Chrome Headless dan mungkin perpustakaan pembungkus
Pro
Cons
Penafian: Saya adalah pendiri ApiFlash. Saya melakukan yang terbaik untuk memberikan jawaban yang jujur dan bermanfaat.
sumber
Saya menggunakan Windows sehingga saya dapat menggunakan fungsi imagegrabwindow setelah membaca tip di sini dari stephan. Saya menambahkan dalam pemotongan (untuk menghilangkan header Browser, scroll bar, dll.) Dan mengubah ukuran untuk mendapatkan gambar akhir. Ini kode saya . Semoga itu bisa membantu seseorang.
sumber
webkit2html berfungsi pada Mac OS X dan Linux, cukup mudah untuk diinstal dan digunakan. Lihat tutorial ini .
Untuk Windows, Anda dapat menggunakan CutyCapt , yang memiliki fungsi serupa.
sumber
Saya menggunakan bluga . Api memungkinkan Anda mengambil 100 foto sebulan tanpa membayar, tetapi kadang-kadang menggunakan lebih dari 1 kredit untuk satu halaman. Saya baru saja selesai memutakhirkan modul drupal, Bluga WebThumbs ke drupal 7 yang memungkinkan Anda mencetak thumbnail dalam template atau input filter.
Keuntungan utama menggunakan api ini adalah memungkinkan Anda untuk menentukan dimensi peramban jika Anda menggunakan css adaptif, jadi saya menggunakannya untuk mendapatkan rendering untuk tata letak ponsel dan tablet serta yang biasa.
Ada api klien untuk bahasa-bahasa berikut:
PHP , Python , Ruby , Java , .Net C # , Perl dan Bash (skrip shell sepertinya membutuhkan perl)
sumber
Itu semua tergantung pada bagaimana Anda ingin mengambil tangkapan layar.
Anda bisa melakukan ini melalui PHP, menggunakan layanan web untuk mendapatkan gambar untuk Anda
grabz.it memiliki layanan web untuk melakukan hal ini, inilah artikel yang menunjukkan contoh sederhana menggunakan layanan ini.
http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html
sumber
Anda dapat menggunakan solusi https://grabz.it .
Itu punya PHP API yang sangat fleksibel dan dapat dipanggil dengan berbagai cara seperti dari cronjob atau halaman web PHP.
Untuk menerapkannya, Anda harus terlebih dahulu mendapatkan kunci aplikasi dan rahasia serta mengunduh (gratis) SDK.
Dan contoh untuk implementasi. Pertama-tama inisialisasi:
Dan contoh tangkapan layar:
Berikutnya adalah penghematan. Anda dapat menggunakan salah satu dari dua metode penyimpanan,
Save
jika panggilan balik yang dapat diakses publik tersedia danSaveTo
jika tidak. Periksa dokumentasi untuk detailnya .sumber
Saya menulis aplikasi cepat dan kotor tempo hari untuk melakukan ini menggunakan Google API. Tentunya ruang lingkup untuk peningkatan ...
Temukan di sini dengan demo dan kode langsung .
Saya tidak memposting kode di sini hanya karena saya terus memperbaikinya dan mudah-mudahan ketika saya punya waktu, mengubahnya menjadi kelas yang tepat.
sumber
Saya menggunakan page2images . Ini dikembangkan berdasarkan cutycapt yang sangat cepat dan stabil. Jika Anda tidak ingin menghabiskan terlalu banyak waktu untuk kinerja dan konfigurasi, Anda harus menggunakannya. Jika Anda mengunjungi situs web mereka, Anda dapat menemukan lebih banyak detail dan contoh kode PHP.
sumber
Setelah banyak berselancar di web saya menemukan ini.
PPTRAAS > Alat gratis untuk menangkap tangkapan layar dengan mengirimkan URL Anda sebagai parameter
Mereka menyediakan banyak opsi hanya dengan menekan URL mereka.
Dapatkan tangkapan layar satu halaman penuh
https://pptraas.com/screenshot?url= {URL ANDA DI SINI}
Dapatkan tangkapan layar halaman dengan ukuran tertentu
https://pptraas.com/screenshot?url= {URL ANDA DI SINI} & size = 400.400
Satu bahkan dapat mengkonversi halaman ke pdf
https://pptraas.com/pdf?url= {URL ANDA DI SINI}
sumber
Anda bisa melakukan 2 hal.
Gunakan Dalang
Anda dapat menggunakan paket PHP Puppeteer untuk memutar browser dan mengambil tangkapan layar.
Gunakan API
Ada banyak tangkapan layar API. Anda dapat melihat ScreenshotAPI.net misalnya. (Penafian saya pencipta API itu)
sumber
Tidak secara langsung. Perangkat lunak seperti Selenium memiliki fitur seperti ini dan dapat dikontrol oleh PHP tetapi memiliki dependencys lainnya (seperti menjalankan server berbasis java di komputer dengan browser yang ingin Anda tangkapan layar)
sumber
Anda dapat menggunakan cutycapt.
kwhtml sudah usang dan menampilkan halaman seperti browser lama.
sumber
Saya menemukan ini sebagai alat terbaik dan termudah: ScreenShotMachine . Ini adalah layanan berbayar, tetapi Anda mendapatkan 100 tangkapan layar gratis dan Anda dapat membeli 2.000 lainnya seharga (sekitar) $ 20, jadi ini adalah kesepakatan yang cukup bagus. Ini memiliki penggunaan yang sangat sederhana, Anda hanya menggunakan URL, jadi saya menulis skrip kecil ini untuk menyimpan file berdasarkan itu:
Mereka memiliki dokumentasi yang sangat bagus di sini , jadi Anda harus melihatnya.
sumber