Есть ли способ сделать снимок экрана сайта в PHP, а затем сохранить его в файл?
php
screenshot
Паоло Форджия
источник
источник
Ответы:
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ : через 7 лет я все еще получаю отклики за этот ответ, но я думаю, что этот теперь намного точнее.
Конечно, вы можете, но вам нужно будет отрисовать страницу с чем-то. Если вы действительно хотите использовать только php, я предлагаю вам HTMLTOPS , который визуализирует страницу и выводит ее в файл ps (ghostscript), а затем конвертирует ее в .jpg, .png, .pdf .. может быть немного медленнее с сложные страницы (и не поддерживают все CSS).
Иначе , вы можете использовать wkhtmltopdf для вывода html-страницы в формате pdf, jpg и т. Д. Примите CSS2.0, используйте webkit (оболочку сафари) для отображения страницы .. так что все должно быть в порядке. Вы должны установить его на свой сервер, а также ..
ОБНОВЛЕНИЕ Теперь, с новой функцией HTML5 и JS, также можно отобразить страницу в объект холста с помощью JavaScript. Вот хорошая библиотека для этого: Html2Canvas, а вот реализация того же автора для получения обратной связи, подобной G +. После того, как вы поместили dom на холст, вы можете отправить его на сервер через ajax и сохранить его в формате jpg.
РЕДАКТИРОВАТЬ : Вы можете использовать инструмент imagemagick для преобразования PDF в PNG. Моя версия wkhtmltopdf не поддерживает изображения. Например
convert html.pdf -append html.png
.РЕДАКТИРОВАТЬ : Этот небольшой сценарий оболочки дает простой / но рабочий пример использования на Linux с php5-cli и инструментами, упомянутыми выше.
РЕДАКТИРОВАТЬ : я заметил, что теперь команда wkhtmltopdf работает над другим проектом: wkhtmltoimage, который дает вам JPG напрямую
источник
Начиная с PHP 5.2.2, возможно захватить сайт исключительно с помощью PHP !
Изменить: Обратите внимание, что эти функции доступны только в системах Windows!
источник
Если вы не хотите использовать какие-либо сторонние инструменты, я наткнулся на простое решение, использующее API Google Page Insight .
Просто нужно назвать это API с параметрами
screenshot=true
.Для просмотра мобильного сайта передайте
&strategy=mobile
в параметрах,ДЕМО .
источник
Вы можете использовать простой безголовый браузер, такой как PhantomJS, чтобы захватить страницу.
Также вы можете использовать PhantomJS с PHP.
Проверьте этот маленький скрипт php, который делает это. Посмотрите здесь https://github.com/microweber/screen
А вот и API- http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
источник
Это должно быть хорошо для вас:
https://wkhtmltopdf.org/
Убедитесь, что вы скачали дистрибутив wkhtmltoimage!
источник
Да. Вам понадобятся некоторые вещи, которые:
Смотрите khtmld (aemon) на * nx. Посмотрите Url2Jpg для Windows, но так как это приложение dotNet, вам также следует проверить Url2Bmp
Оба являются консольными инструментами, которые вы можете использовать в своем веб-приложении, чтобы получить скриншот.
Есть также веб-сервисы, которые предлагают это. Проверьте это , например.
Редактировать:
Эта ссылка полезна для.
источник
Это на Python, но, просматривая документацию и код, вы можете увидеть, как именно это делается. Если вы можете запустить Python, то это готовое решение для вас:
http://browsershots.org/
Обратите внимание, что все может работать на одной машине для одной платформы или на одной машине с виртуальными машинами, работающими на других платформах.
Бесплатно, с открытым исходным кодом, прокрутите вниз страницы для ссылок на документацию, исходный код и другую информацию.
источник
Да, это так. Если вам нужно только изображение URL, попробуйте это
Передавайте URL в качестве аргумента, и вы получите изображение для более подробной информации, перейдите по этой ссылке http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
источник
Ну, PhantomJS - это браузер, который можно легко поставить на сервер и интегрировать в php. Вы можете найти код в WDudes. Они включают в себя намного больше функций, таких как указание размера изображения, кэша, загрузки в виде файла или отображения в img src и т. Д.
Параметры URL
Ширина и высота: screenshot.php? Url = google.com & w = 1000 & h = 800
С кадрированием: screenshot.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Отключите кеш и загрузите свежие скриншоты:
screenshot.php? Url = google.com & cache = 0
Чтобы загрузить изображение: screenshot.php? Url = google.com & download = true
Вы можете посмотреть учебник здесь: Снимок экрана веб-сайта с использованием PHP без API
источник
Cutycapt сохраняет веб-страницы в большинстве графических форматов (JPG, PNG ..) скачать его с Synaptic, он работает намного лучше, чем wkhtmltopdf
источник
Я всегда использую экран microweber, чтобы сделать снимок экрана любой веб-страницы. Здесь мы можем найти хорошо написанный учебник . Это легче и не должно занять больше 3 минут, чтобы учиться.
источник
Наконец я настроил использование microweber / screen, как предложено @boksiora.
Изначально при попытке упомянутой ссылки вот что я получил:
Я на Linux. Поэтому, если вы хотите запустить его, вы можете настроить мой шаг следуя вашей среде.
Вот шаг, который я сделал для своей оболочки в
DOCUMENT_ROOT
папке:Укажите ваш браузер на
screen/demo/shot.php?url=google.com
. Когда вы видите скриншот , все готово. Обсуждение дополнительных настроек доступно здесь и здесь .источник
Есть много проектов с открытым исходным кодом, которые могут создавать скриншоты. Например, PhantomJS, webkit2png и т. Д.
Большая проблема этих проектов заключается в том, что они основаны на более старой технологии браузера и имеют проблемы с отображением многих сайтов, особенно сайтов, использующих веб-шрифты, flexbox, svg и различные другие дополнения к спецификации HTML5 и CSS за последние пару месяцев / лет.
Я пробовал несколько сторонних сервисов, и большинство из них основаны на PhantomJS, что означает, что они также создают скриншоты низкого качества. Лучший сторонний сервис для создания скриншотов сайта - urlbox.io . Это платная услуга, хотя есть бесплатная 7-дневная пробная версия, чтобы протестировать ее без каких-либо платных планов.
Вот ссылка на документацию , и ниже приведены простые шаги, чтобы заставить его работать на PHP с помощью composer.
Например, вот полный снимок экрана этой страницы:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F757675%2Fwebsite-screenshots-using-php% 2F43652083% 2343652083 & full_page = истина
источник
Вариантов много, и у всех есть свои плюсы и минусы. Вот список вариантов, упорядоченных по сложности реализации.
Вариант 1: использовать API (самый простой)
Pros
Cons
Вариант 2. Используйте одну из множества доступных библиотек
Pros
Cons
Вариант 3: используйте PhantomJs и, возможно, библиотеку-обертку
Pros
Cons
Вариант 4. Используйте Chrome Headless и, возможно, библиотеку-оболочку.
Pros
Cons
Отказ от ответственности: я основатель ApiFlash. Я сделал все возможное, чтобы дать честный и полезный ответ.
источник
Я на Windows, поэтому я смог использовать функцию imagegrabwindow после прочтения подсказки здесь от Стефана. Я добавил обрезку (чтобы избавиться от заголовка браузера, полос прокрутки и т. Д.) И изменение размера, чтобы получить окончательное изображение. Вот мой код . Надеюсь, что это помогает кому-то.
источник
webkit2html работает на Mac OS X и Linux, довольно прост в установке и использовании. Смотрите этот урок .
Для Windows вы можете использовать CutyCapt , который имеет аналогичную функциональность.
источник
Я использовал блюгу . API позволяет делать 100 снимков в месяц без оплаты, но иногда он использует более 1 кредита на одну страницу. Я только что закончил обновление модуля drupal, Bluga WebThumbs до drupal 7, который позволяет вам печатать миниатюру в шаблоне или входном фильтре.
Основным преимуществом использования этого API-интерфейса является то, что он позволяет указывать размеры браузера в случае, если вы используете адаптивный CSS, поэтому я использую его для получения визуализаций для макета мобильного телефона и планшета, а также обычного.
Есть клиенты API для следующих языков:
PHP , Python , Ruby , Java , .Net C # , Perl и Bash (сценарий оболочки выглядит так, как будто он требует perl)
источник
Все зависит от того, как вы хотите сделать скриншот.
Вы можете сделать это через PHP, используя веб-сервис, чтобы получить изображение для вас
У grabz.it есть веб-сервис, чтобы сделать это, вот статья, показывающая простой пример использования сервиса.
http://www.phpbuilder.com/articles/news-reviews/miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html
источник
Вы можете использовать решение https://grabz.it .
Он имеет PHP API, который очень гибок и может вызываться по-разному, например, из cronjob или веб-страницы PHP.
Для того , чтобы реализовать его вам нужно будет сначала получить ключ приложения и секрет и скачать в (бесплатно) SDK.
И пример для реализации. Прежде всего инициализация:
И пример скриншота:
Далее идет сохранение. Вы можете использовать один из двух методов сохранения,
Save
если доступен общедоступный дескриптор обратного вызова, аSaveTo
если нет. Проверьте документацию для деталей .источник
Я написал быстрое и грязное приложение на днях для этого с помощью Google API. Безусловно, возможности для улучшения ...
Найдите это здесь с живой демонстрацией и кодом .
Я не размещал код здесь просто потому, что продолжаю дорабатывать его и, надеюсь, когда у меня будет время, преобразовать его в подходящий класс.
источник
Я использовал page2images . Он разработан на базе кутикапты, который действительно быстр и стабилен. Если вы не хотите тратить слишком много времени на производительность и настройку, вы должны использовать это. Если вы зайдете на их сайт, вы можете найти более подробную информацию и пример кода PHP.
источник
После долгих поисков в Интернете я нашел это.
PPTRAAS > Бесплатный инструмент для захвата скриншота путем передачи вашего URL в качестве параметра
Они предоставляют несколько вариантов, просто нажав их URL.
Получить полный скриншот страницы
https://pptraas.com/screenshot?url= {ВЫ URL ЗДЕСЬ}
Получить скриншот страницы определенного размера
https://pptraas.com/screenshot?url= {ВЫ URL ЗДЕСЬ} & size = 400 400
Можно даже конвертировать страницу в PDF
https://pptraas.com/pdf?url= {ВЫ URL ЗДЕСЬ}
источник
Вы могли бы сделать 2 вещи.
Используйте Кукольника
Вы можете использовать пакет PHP Puppeteer, чтобы раскрутить браузер и сделать скриншот.
Используйте API
Есть много скриншотов API. Вы можете посмотреть на ScreenshotAPI.net, например. (Отказ от ответственности, я создатель этого API)
источник
Не напрямую. Такие программы, как Selenium, имеют такие функции и могут управляться PHP, но имеют другие зависимости (например, запуск сервера на базе Java на компьютере с браузером, который вы хотите сделать снимок экрана)
источник
Вы можете использовать cutycapt.
kwhtml устарел и показывает страницу как старый браузер.
источник
Я обнаружил, что это лучший и самый простой инструмент: ScreenShotMachine . Это платный сервис, но вы получаете 100 бесплатных скриншотов и можете купить еще 2000 за (около) 20 долларов, так что это довольно хорошая сделка. Он очень прост в использовании, вы просто используете URL, поэтому я написал этот небольшой скрипт для сохранения файла на его основе:
Они имеют очень хорошую документацию здесь , так что вы должны обязательно посмотреть.
источник