Existe alguma maneira de tirar uma captura de tela de um site em PHP e salvá-la em um arquivo?
php
screenshot
Paolo Forgia
fonte
fonte
Respostas:
ÚLTIMA EDIÇÃO : depois de sete anos, ainda estou recebendo votos positivos para esta resposta, mas acho que agora é muito mais precisa.
Claro que você pode, mas precisará renderizar a página com alguma coisa. Se você realmente deseja usar apenas o php, sugiro que o HTMLTOPS , que renderiza a página e a produz em um arquivo ps (ghostscript), converta-o em .jpg, .png, .pdf. Pode ser um pouco mais lento com páginas complexas (e não suportam todo o CSS).
Caso contrário , você pode usar o wkhtmltopdf para gerar uma página html em pdf, jpg, qualquer que seja. Aceite CSS2.0, use o webkit (wrapper do safari) para renderizar a página. Você também deve instalá-lo no seu servidor.
ATUALIZAÇÃO Agora, com o novo recurso HTML5 e JS, também é possível renderizar a página em um objeto de tela usando JavaScript. Aqui está uma boa biblioteca para fazer isso: Html2Canvas e aqui está uma implementação do mesmo autor para obter um feedback como o G +. Depois de renderizar o dom na tela, você poderá enviar para o servidor via ajax e salvá-lo como jpg.
EDIT : Você pode usar a ferramenta imagemagick para transformar pdf em png. Minha versão do wkhtmltopdf não suporta imagens. Por exemplo
convert html.pdf -append html.png
.EDIT : Este pequeno script shell fornece um exemplo de uso simples / porém funcional no linux com php5-cli e as ferramentas mencionadas acima.
EDIT : notei agora que a equipe wkhtmltopdf está trabalhando em outro projeto: wkhtmltoimage, que fornece o jpg diretamente
fonte
Desde o PHP 5.2.2 , é possível capturar um site apenas com o PHP !
Edit: Note, essas funções estão disponíveis apenas nos sistemas Windows!
fonte
Se você não quiser usar nenhuma ferramenta de terceiros, encontrei uma solução simples que usa a API do Google Page Insight .
Só preciso chamá-lo de API com params
screenshot=true
.Para a exibição do site para celular, passe
&strategy=mobile
nos parâmetros,DEMO .
fonte
Você pode usar um navegador sem cabeça simples como o PhantomJS para acessar a página.
Além disso, você pode usar o PhantomJS com PHP.
Confira este pequeno script php que faz isso. Dê uma olhada aqui https://github.com/microweber/screen
E aqui está a API - http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
fonte
Isso deve ser bom para você:
https://wkhtmltopdf.org/
Certifique-se de baixar a distribuição wkhtmltoimage!
fonte
Sim. Você precisará de algumas coisas:
Veja khtmld (aemon) em * nx. Veja Url2Jpg para Windows, mas como é o aplicativo dotNet, você também deve usar o Url2Bmp
Ambas são ferramentas de console que você pode utilizar em seu aplicativo da web para obter a captura de tela.
Também existem serviços da web que o oferecem. Veja isso por exemplo.
Editar:
Este link é útil para.
fonte
Está em Python, mas examinando a documentação e o código, você pode ver exatamente como isso é feito. Se você pode executar python, é uma solução pronta para você:
http://browsershots.org/
Observe que tudo pode ser executado em uma máquina para uma plataforma ou em uma máquina com máquinas virtuais executando as outras plataformas.
De código aberto e gratuito, role até o final da página para obter links para documentação, código fonte e outras informações.
fonte
Sim, ele é. Se você precisar apenas de imagem de URL, tente isto
Passe o URL como argumento e você obterá a imagem para obter mais detalhes, verifique este link http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
fonte
Bem, o PhantomJS é um navegador que pode ser facilmente colocado em um servidor e integrado ao php. Você pode encontrar o código no WDudes. Eles incluíram muito mais recursos, como especificar o tamanho da imagem, cache, fazer o download como um arquivo ou exibir em img src etc.
Parâmetros de URL
Largura e altura: screenshot.php? Url = google.com & w = 1000 & h = 800
Com o recorte: screenshot.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Desative o cache e carregue screesnhot:
screenshot.php? Url = google.com.br & cache = 0
Para baixar a imagem: screenshot.php? Url = google.com & download = true
Você pode ver o tutorial aqui: Capturar captura de tela de um site usando PHP sem API
fonte
O cutycapt salva páginas da web na maioria dos formatos de imagem (jpg, png ..) faça o download no seu synaptic, funciona muito melhor do que o wkhtmltopdf
fonte
Eu sempre uso a tela de micro-ondas para capturar imagens de qualquer página da web. Aqui podemos encontrar um tutorial bem escrito . Isso é mais fácil e não deve demorar mais de 3 minutos para aprender.
fonte
Eu finalmente configurei usando microweber / screen como proposto por @boksiora.
Inicialmente, ao tentar o link mencionado aqui, o que obtive:
Estou no Linux. Portanto, se você deseja executá-lo, pode ajustar o meu passo a seguir para o seu ambiente.
Aqui está o passo que fiz no meu shell na
DOCUMENT_ROOT
pasta:Aponte seu navegador para
screen/demo/shot.php?url=google.com
. Quando você vê a captura de tela , está pronto. Discussões para configurações mais avançadas estão disponíveis aqui e aqui .fonte
Existem muitos projetos de código aberto que podem gerar capturas de tela. Por exemplo, PhantomJS, webkit2png etc
O grande problema desses projetos é que eles são baseados em tecnologias de navegador mais antigas e têm problemas para renderizar muitos sites, especialmente sites que usam fachadas da web, flexbox, svg e várias outras adições às especificações HTML5 e CSS nos últimos dois meses / anos.
Eu tentei alguns dos serviços de terceiros e a maioria é baseada no PhantomJS, o que significa que eles também produzem capturas de tela de baixa qualidade. O melhor serviço de terceiros para gerar capturas de tela de sites é o urlbox.io . É um serviço pago, embora exista uma avaliação gratuita de 7 dias para testá-lo sem comprometer-se com nenhum plano pago.
Aqui está um link para a documentação , e abaixo estão etapas simples para fazê-lo funcionar em PHP com o compositor.
Por exemplo, aqui está uma captura de tela em altura total desta página:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fs2f-75w 2F43652083% 2343652083 & full_page = true
fonte
Há muitas opções e todos têm seus prós e contras. Aqui está uma lista de opções ordenadas por dificuldade de implementação.
Opção 1: use uma API (a mais fácil)
Prós
Contras
Opção 2: use uma das muitas bibliotecas disponíveis
Prós
Contras
Opção 3: use PhantomJs e talvez uma biblioteca de invólucros
Prós
Contras
Opção 4: use o Chrome Headless e talvez uma biblioteca de invólucros
Prós
Contras
Disclaimer: Eu sou o fundador do ApiFlash. Eu fiz o meu melhor para fornecer uma resposta honesta e útil.
fonte
Estou no Windows, então pude usar a função imagegrabwindow depois de ler a dica aqui do stephan. Eu adicionei no recorte (para se livrar do cabeçalho do navegador, nas barras de rolagem etc.) e no redimensionamento para obter uma imagem final. Aqui está o meu código . Espero que ajude alguém.
fonte
O webkit2html funciona no Mac OS X e Linux, é bastante simples de instalar e usar. Veja este tutorial .
No Windows, você pode usar o CutyCapt , que possui uma funcionalidade semelhante.
fonte
Eu usei bluga . A API permite tirar 100 instantâneos por mês sem pagar, mas às vezes usa mais de 1 crédito para uma única página. Acabei de atualizar um módulo drupal, Bluga WebThumbs para o drupal 7, que permite imprimir uma miniatura em um modelo ou filtro de entrada.
A principal vantagem de usar esta API é que ela permite especificar as dimensões do navegador, caso você use css adaptável, por isso estou usando-a para obter renderizações para o layout para dispositivos móveis e tablets, bem como para o regular.
Existem clientes API para os seguintes idiomas:
PHP , Python , Ruby , Java , .Net C # , Perl e Bash (o shell script requer perl)
fonte
Tudo depende de como você deseja tirar a captura de tela.
Você pode fazer isso via PHP, usando um serviço da web para obter a imagem para você
grabz.it tem um serviço da web para fazer exatamente isso, aqui está um artigo mostrando um exemplo simples de uso do serviço.
http://www.phpbuilder.com/articles/news-reviews/misc Miscellaneous/capture-screenshots-in-php-with-grabzit-120524022959.html
fonte
Você pode usar a solução https://grabz.it .
Ele possui uma API PHP que é muito flexível e pode ser chamada de diferentes maneiras, como em um cronjob ou em uma página da Web PHP.
Para implementá-lo, você precisa primeiro obter uma chave e um segredo do aplicativo e fazer o download o SDK (gratuito).
E um exemplo de implementação. Primeiro de tudo a inicialização:
E exemplo de captura de tela:
Em seguida, é possível salvar. Você pode usar um dos dois métodos de salvamento,
Save
se o identificador de retorno de chamada acessível ao público estiver disponível e,SaveTo
se não estiver. Verifique a documentação para obter detalhes .fonte
Outro dia, escrevi um aplicativo rápido e sujo para fazer isso usando a API do Google. Certamente espaço para melhorias ...
Encontre-o aqui com uma demonstração e código ao vivo .
Não publiquei o código aqui simplesmente porque continuo refinando-o e espero que, quando tiver tempo, converta-o em uma classe adequada.
fonte
Eu usei o page2images . É desenvolvido com base no cutycapt, que é realmente rápido e estável. Se você não deseja gastar muito tempo com o desempenho e a configuração, deve usá-lo. Se você for ao site deles, poderá encontrar mais detalhes e exemplos de código PHP.
fonte
Depois de muito navegar na web, encontrei isso.
PPTRAAS > Uma ferramenta gratuita para capturar capturas de tela passando seu URL como parâmetro
Eles oferecem várias opções simplesmente pressionando o URL.
Obter tela inteira
https://pptraas.com/screenshot?url= {VOCÊ URL AQUI}
Obter captura de tela da página de tamanho específico
https://pptraas.com/screenshot?url= {VOCÊ URL AQUI} e size = 400.400
Pode-se até converter a página em pdf
https://pptraas.com/pdf?url= {VOCÊ URL AQUI}
fonte
Você poderia fazer 2 coisas.
Use Puppeteer
Você pode usar o pacote PHP Puppeteer para ativar um navegador e tirar uma captura de tela.
Use uma API
Existem muitas APIs de captura de tela. Você pode ver o ScreenshotAPI.net por exemplo. (Isenção de responsabilidade, sou o criador dessa API)
fonte
Não diretamente. Softwares como o Selenium têm recursos como este e podem ser controlados pelo PHP, mas têm outras dependências (como executar o servidor baseado em java no computador com o navegador que você deseja capturar).
fonte
você pode usar o cutycapt.
O kwhtml está obsoleto e mostra a página como um navegador antigo.
fonte
Descobri que esta é a melhor e mais fácil ferramenta: ScreenShotMachine . É um serviço pago, mas você recebe 100 capturas de tela gratuitas e pode comprar outras 2.000 por (cerca de) US $ 20, por isso é um bom negócio. Ele tem um uso muito simples, basta usar um URL, então escrevi este pequeno script para salvar um arquivo com base nele:
Eles têm uma documentação muito boa aqui , então você definitivamente deve dar uma olhada.
fonte