Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как добавить phpThumb в Битрикс

00 голосов
4
Всем привет вообщем, необходимо чтобы при добавлении картинки в инфоблок автоматически создавалось привьюшка.
Прикрутил  phpThumb, теперь при добавлении элемента вылазит ошибка, в init.php следующий код:

Код
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; 
    } 
}
}
?>
спросил 29 Дек, 13 от Maximus1 (380 баллов)

4 Ответы

00 голосов
Что никто не сталкивался с phpThumb ?
ответил 25 Март, 14 от Maximus1 (380 баллов)
00 голосов
А чем стандартные средства не устраивают?
ответил 17 Июль, 14 от Apostolq (340 баллов)
00 голосов
К тому же в MakeImage передается массив из обновляемых/добавляемых данных инфоблока, а не путь к картинке.
ответил 17 Ноя, 14 от Apostolq (340 баллов)
00 голосов
ответил 14 Март, 15 от fdsc (180 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
2 ответов
0 голосов
1 ответ
0 голосов
0 ответов
0 голосов
2 ответов