Скрииншот на сайт с php Windows версия. html2jpg
Ето един урок как да създаваме скрииншотове на сайтове. За съжаление все още тази функция не се поддържа от PHP, а трябва да се ползват помощни материали. Започваме с варянта за Windows. Значи всичко необходимо е да имаме едно малко exe което е помощното средство в случая. Казва се IECapt.exe и се разпространява под GNU лиценз. Ето линк към нея. IECapt.

Може да видите и кода и на следния адрес, който разбира може и да и направи алтернатива за Linux. Source code.

Работи само на системи с Microsoft Windows XP и Windows Server 2003. за да може да работи се нуждае от файла gdiplus.dll. По принцип този файл трябва да го има към Windows-а. Но може да попаднете на версия която го няма. Ако сте с такава версия трябва да го намерите и да го сложите в същата директория при IECapt.

До тук бяха разясненията за IECapt.

Сега един примерен скрипт за създаване на скрииншотове с PHP. Скрипта не е мое дело, а е взет готов за целта от zubrag.com. Можете да си го свалите директо на архив от там или да ползвате следните:

image.class.php


<?php

class Zubrag_image {

var $save_to_file = true;
var $image_type = -1;
var $quality = 100;
var $max_x = 100;
var $max_y = 100;
var $cut_x = 0;
var $cut_y = 0;

function SaveImage($im, $filename) {

$res = null;

// GIF Форматът не се подържа от някои версии на GD2, затова може да не работи.
// Изходящ PNG ако GIF не се подържа
if(($this->image_type == 1) && !function_exists('imagegif')) $this->image_type = 3;

switch ($this->image_type) {
case 1:
if ($this->save_to_file) {
$res = ImageGIF($im,$filename);
}
else {
header("Content-type: image/gif");
$res = ImageGIF($im);
}
break;
case 2:
if ($this->save_to_file) {
$res = ImageJPEG($im,$filename,$this->quality);
}
else {
header("Content-type: image/jpeg");
$res = ImageJPEG($im,'',$this->quality);
}
break;
case 3:
if ($this->save_to_file) {
$res = ImagePNG($im,$filename);
}
else {
header("Content-type: image/png");
$res = ImagePNG($im,'',$this->quality);
}
break;
}

return $res;

}

function ImageCreateFromType($type,$filename) {
$im = null;
switch ($type) {
case 1:
$im = ImageCreateFromGif($filename);
break;
case 2:
$im = ImageCreateFromJpeg($filename);
break;
case 3:
$im = ImageCreateFromPNG($filename);
break;
}
return $im;
}

// Генериране на малко изображение от картинката и запазване
function GenerateThumbFile($from_name, $to_name) {

// Взимане на размера и типът на изображението (Ширина/височина/тип)
// orig_img_type 1 = GIF, 2 = JPG, 3 = PNG
list($orig_x, $orig_y, $orig_img_type, $img_sizes) = GetImageSize($from_name);

// Изрязваме картинката по зададените от потребителя ширина и височина
if ($this->cut_x > 0) $orig_x = min($this->cut_x, $orig_x);
if ($this->cut_y > 0) $orig_y = min($this->cut_y, $orig_y);

// тип на картинката?
$this->image_type = ($this->image_type != -1 ? $this->image_type : $orig_img_type);

// Проверяваме дали е позволен тип картинката
if ($orig_img_type < 1 or $orig_img_type > 3) die("Image type not supported");

if ($orig_x > $this->max_x or $orig_y > $this->max_y) {

// Оразмеряване
$per_x = $orig_x / $this->max_x;
$per_y = $orig_y / $this->max_y;
if ($per_y > $per_x) {
$this->max_x = $orig_x / $per_y;
}
else {
$this->max_y = $orig_y / $per_x;
}

}
else {
// Запазваме оригиналния размер. Просто копираме
if ($this->save_to_file) {
@copy($from_name, $to_name);
}
else {
switch ($this->image_type) {
case 1:
header("Content-type: image/gif");
include($from_name);
break;
case 2:
header("Content-type: image/jpeg");
include($from_name);
break;
case 3:
header("Content-type: image/png");
include($from_name);
break;
}
}
return;
}

if ($this->image_type == 1) {
// ползваме тази функция за GIF-ове
$ni = imagecreate($this->max_x, $this->max_y);
}
else {
// Създаваме нова картинка
$ni = ImageCreateTrueColor($this->max_x,$this->max_y);
}

// Запълваме бекграунда с бял фон (255,255,255)
$white = imagecolorallocate($ni, 255, 255, 255);
imagefilledrectangle( $ni, 0, 0, $this->max_x, $this->max_y, $white);
// Създаваме нов фаил от сорс файла
$im = $this->ImageCreateFromType($orig_img_type,$from_name);
// копираме палитрата от едната картинка на другата
imagepalettecopy($ni,$im);
// Копиране и оразмеряване на изображението
imagecopyresampled(
$ni, $im, // дестинация, сорс
0, 0, 0, 0, // dstX, dstY, srcX, srcY
$this->max_x, $this->max_y, // dstW, dstH
$orig_x, $orig_y); // srcW, srcH

// Запазваме малкото изобрацение
$this->SaveImage($ni, $to_name);
}

}

?>


И webthumb.php

Трябва да редактирате следния ред:
$thumbnails_folder = 'Z:/home/localhost/www/thumb/cache/';
като зададете къде да се записват при вас файловете


<?php
###############################################################
# Website Thumbnail Image Generator 1.1
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################
#
# REQUIREMENTS:
# PHP 4.0.6 and GD 2.0.1 or later
# May not work with GIFs if GD2 library installed on your server
# does not support GIF functions in full
#
# Parameters that can be passed via url (if not passed will be used values which are set below):
# url - url of the target website
# x - max width
# y - max height
# q - quality (applicable only to JPG, 1 to 100, 100 - best)
#
# Sample usage:
# 1. webthumb.php?url=http://www.microsoft.com
# 2. Set maximum thumbnail size to 150
# webthumb.php?url=http://www.thumbnails.com&x=150&y=150
###############################################################

// Директория за запазване на малкото изображение
// с наклонена черта в края /
$thumbnails_folder = 'Z:/home/localhost/www/thumb/cache/';

// Запазване на Малкото изображение в минути време
$cache_expire_time = 60;

// Качество (само за JPEG)
$image_quality = 100;

// тип на картинката (1 = GIF, 2 = JPG, 3 = PNG)
$image_type = 3;

// Максимален размер на малкото изображение
$max_x = 100;
$max_y = 100;

// If not equal 0 then cut original image size before resizing (in pixels).
// Дългите сайтове ще имат лошо качество на изображението затова ги изрязваме на 1024 пиксела.
$cut_x = 0;
$cut_y = 1024;

###############################################################################
# END OF SETTINGS. DO NOT EDIT BELOW
###############################################################################

if (isset($_REQUEST['url'])) {
$website_url = $_REQUEST['url'];
}
else {
die("Site URL must be specified.");
}

if ($image_type == 1) $output_format = 'gif';
if ($image_type == 2) $output_format = 'jpg';
if ($image_type == 3) $output_format = 'png';

$website_url_md5 = md5($website_url);

$cached_filename = $thumbnails_folder . $website_url_md5 . '.' . $output_format;

// Проверяваме дали имаме картинка на сайта
if (!file_exists($cached_filename)
|| filemtime ($cached_filename) + $cache_expire_time * 60 < time() ) {

// Взимане на картинка от саита и запазване на сървъра.
@exec('IECapt.exe ' . escapeshellarg($website_url) . ' ' . escapeshellarg($cached_filename));

} // if (!file_exists

if (!file_exists($cached_filename)) {
die("Thumbnail Generation Error. Thumbnail not created.");
}

// Инклудваме класа за картинката
include("image.class.php");
$img = new Zubrag_image;

// Взимане на параметрите с GET
$img->image_type = $image_type;
$img->quality = isset($_REQUEST['q']) ? intval($_REQUEST['q']) : $image_quality;
$img->max_x = isset($_REQUEST['x']) ? intval($_REQUEST['x']) : $max_x;
$img->max_y = isset($_REQUEST['y']) ? intval($_REQUEST['y']) : $max_y;
$img->save_to_file = false;
$img->cut_x = $cut_x;
$img->cut_y = $cut_y;

// Генериране на малкото изображение и показването му
$img->GenerateThumbFile($cached_filename, '');

?>



Скриптовете заедно е IECapt трябва да са в една и съща директория. Отваряте си линка и задавате следния адрес:

http://site.com/webthumb.php?url=http://web-tourist.net – тук site.com замествате с вашия сайт, а http://web-tourist.net е сайта на които искате да направите скрииншот.
Друг варянт е:
http://site.com/webthumb.php?url=http://web-tourist.net&x=150&y=150 –същото като горния пример, но тук задавате и максимален размер за генериране на височина и ширина.

Това е всичко за сега за Windows. За Linux още няма алтернатива свободна има една за 300$. Но не се намира никъде за да се види как действа. Най-често ползваните методи за Linux са взимане на вече готови изображения от сайтове които предлагат услугата безплатно. Ето някой от тях:



http://bluga.net/webthumb/
http://www.webshotspro.com/
http://www.danvine.com/iecapture/

Този урок не участва в играта на inbg.eu поради правилата на играта.


Ако на някои не му е ясно нещо или има въпроси, може да се свържe с мен във форума или на ЛС.


ДЕМО






/ Трябва да сте регистриран за да напишете коментар /