include('/bitrix/php_interface/includes/phpThumb/phpThumb.class.php');
//Создание элемента
AddEventHandler("iblock", "OnBeforeIBlockElementAdd",array("AddThumbs", "MakeImage"));
//Изменение элемента
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate",array("AddThumbs", "MakeImage"));
class AddThumbs
{
/**
* Генерация превьюшек для больших изображений
*
* @param string $src путь от корня сайта к исходной картинке
* @param int $size размер изображения (сторона квадрата в пикселях)
* @param int $lifeTime время жизни превьюшки в секундах (по дефолту месяц)
* @return string
*/
function MakeImage ($src, $size=200, $lifeTime = 2592000, $params = "") {
if (!$lifeTime) $lifeTime = 2592000;
if (!$size) $size = 200;
if (is_numeric($src)) if ($src > 0) $src = CFile::GetPath($src);
if (file_exists($_SERVER['DOCUMENT_ROOT'].$src)) {
require_once($_SERVER['DOCUMENT_ROOT']."/bitrix/php_interface/includes/phpThumb/phpthumb.class.php"); // Подключаем и иннициализируем phpThumb
$phpThumb = new phpThumb();
$phpThumb->src = $src;
$ext = end(explode(".", $src)); // Расширение файла картинки
switch ($ext) {
case "jpg": $phpThumb->f = "jpeg"; break;
case "gif": $phpThumb->f = "gif"; break;
case "png": $phpThumb->f = "png"; break;
default: $phpThumb->f = "jpeg"; break;
}
$base_name = basename($src, ".".$ext); // Основное имя файла
$phpThumb->w = $size;
//$phpThumb->h = $size;
$phpThumb->q = 90;
$phpThumb->bg = "#ffffff";
$phpThumb->far = true;
$phpThumb->aoe = false;
if (is_array($params)) {
foreach ($params as $param=>$value) {
$phpThumb->$param = $value;
}
$code = substr(md5(serialize($params)), 8, 16); // сократим суффикс с параметрами до 16 символов
} else {
$code = $phpThumb->w;
}
$target_file = $_SERVER['DOCUMENT_ROOT'].dirname($src)."/".$base_name."_thumb_".$code.".".$ext;
if (file_exists($target_file) AND filesize($target_file)>0) {
if (filemtime($target_file)+$lifeTime < time()) { // Файл есть, но старый
$phpThumb->GenerateThumbnail();
$success = $phpThumb->RenderToFile($target_file);
} else { // Файл есть, новый, не генерируем
$success = true;
}
} else { // Файла нет, генерируем
if (file_exists($target_file) AND filesize($target_file)==0) @unlink($target_file); // удаление файла нулевой длины
$phpThumb->GenerateThumbnail();
$success = $phpThumb->RenderToFile($target_file);
}
if ($success) return substr($target_file, strlen($_SERVER['DOCUMENT_ROOT'])); else return false;
} else {
return false;
}
}
}
?> |