Wkhtmltoimage è un'applicazione molto utile per creare screenshot di un sito web o di una pagina web. Alcune volte abbiamo richiesto di creare uno screenshot delle pagine Web e memorizzarlo nel nostro sistema. Utilizza il motore di rendering QT Webkit per la creazione di immagini in vari formati. Questo articolo ti aiuterà a catturare screenshot di una pagina web usando lo script php e la riga di comando di Linux.
Passaggio 1:installa wkhtmltoimage in Linux
Scarica wkhtmltoimage da google code e installalo sul tuo sistema Linux seguendo i seguenti passaggi.
# cd /opt # wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.0/wkhtmltox-linux-i386_0.12.0-03c001d.tar.xz # tar xJf wkhtmltox-linux-i386_0.12.0-03c001d.tar.xz # ln -s /opt/wkhtmltox/bin/wkhtmltoimage /usr/bin/wkhtmltoimage # chown apache:apache /usr/bin/wkhtmltoimage # chmod +x /usr/bin/wkhtmltoimage
Fase 2:crea un'immagine utilizzando la riga di comando
Per prima cosa controlla lo script wkhtmltoimage usando la riga di comando di Linux. Il comando seguente acquisirà una schermata di http://google.com e crea un'immagine con nome google.jpg.
# /usr/bin/wkhtmltoimage --no-images --load-error-handling ignore http://google.com google.jpg
Fase 3:codice PHP per creare l'immagine
Usa il seguente codice php per generare un'immagine da html (URL del sito). Questo script richiedeva l'abilitazione della funzione shell_exec per Apache. La maggior parte dei provider di hosting condiviso non consente questa funzione.
Crea un nome file getImage.php e metti sotto il codice:
PHP
123456789 | <?php $url =$_GET['url']; // URL del sito Web per creare l'immagine$nome =$_GET['img']; // Nome immagine di output$comando ="/usr/bin/wkhtmltoimage --no-images --load-error-handling ignore";$dir_img ="/var/www/html/images/"; // I file immagine verranno salvati qui$ex_cmd ="$command $url " . $ dir_img . $nome;$output =shell_exec($ex_cmd);?> |
Usa il seguente syntex o l'URL demo per generare l'immagine del sito web ( html ).
Sintassi:
http://youdomain.com/getImage.php?url=<website url>&img=<image name>
Esempio:
https://tecadmin.net/getImage.php?url=http://google.com&img=image1.jpg
Fase 4:Script PHP per URL SEO friendly
Se desideri creare un URL SEO friendly per questa configurazione, puoi utilizzare i passaggi seguenti.
Crea poche directory richieste nella root dei documenti del tuo server web
# mkdir -p /var/www/html/getImage/ # mkdir -p /var/www/html/getImage/images/
Crea index.php file con il seguente contenuto. Assicurati che tutti i percorsi delle directory siano corretti,
PHP
123456789101112131415 | <?php $url =str_replace('index.php','', $_SERVER['PHP_SELF']);$url =str_replace($url,'',$_SERVER[' REQUEST_URI']);$url =esplode('/',$url);$name =array_shift($url);$weburl =array_shift($url); $command ="/usr/bin/wkhtmltoimage --no-images --load-error-handling ignore";$dir_img ="/var/www/html/getImage/images/"; // I file immagine verranno salvati qui$ex_cmd ="$comando $weburl " . $ dir_img . $name;$output =shell_exec($ex_cmd);echo "<img src="/getImage/images/$name" >"; // Commenta per disabilitare la visualizzazione delle immagini nella pagina ?> |
Ora crea un .htaccess file in questa directory per spostare tutte le richieste nel file index.php. assicurati che il tuo server sia abilitato all'uso del file .htaccess.
# vi /var/www/html/getImage/.htaccess RewriteEngine On RewriteCond %{REQUEST_URI} /images/.+(gif|png|jpg)$ RewriteRule .* - [L] RewriteRule ^.*$ index.php
Ora puoi creare immagini accedendo agli URL come di seguito
Sintassi:
http://youdomain.com/getImage/[imagename]/[site url without http prefix]
Esempio:
https://tecadmin.net/getImage/123.jpg/yahoo.com