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

Кому аккуратные квадратные превьюшки?

00 голосов
2
Вроде правильно...получаются такие квадратные аккуратненькие превьюшки.....не знаю почему сразу это не сделали в битриксе...

Код
<?


function BXIBlockAfterSave($arFields)
{
    if($_POST['MAKE_PREVIEW_PICTURE']=='Y')
    {
        $dbr = CIBlockElement::GetByID($arFields['ID']);
        if(($ar = $dbr->Fetch()) && $ar['DETAIL_PICTURE']>0)
        {
            $img_path = $_SERVER['DOCUMENT_ROOT'].CFile::GetPath($ar['DETAIL_PICTURE']);
            $width = 100;
            $height = 100;
            list($width_orig, $height_orig) = getimagesize($img_path);

            $image_p = imagecreatetruecolor($width, $height);
            $image = imagecreatefromjpeg($img_path);
            if ($width_orig>$height_orig)
            imagecopyresized($image_p, $image, 0, 0, round((max($width_orig,$height_orig)-min($width_orig,$height_orig))/2), 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig));
            if ($width_orig<$height_orig)
           imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig));
             if ($width_orig==$height_orig)
           imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, $width_orig, $width_orig);

            $new_img_path = tempnam("/tmp", "FOO").".jpg";
            imagejpeg($image_p, $new_img_path);
            $be = new CIBlockElement();
            $be->Update($arFields['ID'], Array('PREVIEW_PICTURE'=>CFile::MakeFileArray($new_img_path)), false);
            @unlink($new_img_path);

        }
    }

    if($arFields['WF_STATUS_ID']==1)
    {
        BXClearCache(true, "/ru/main_page/");
        BXClearCache(true, "/ru/detail/".$arFields['ID']."/");
    }
}
?>
спросил 28 Июнь, 13 от DarkStar (160 баллов)

2 Ответы

00 голосов
хе хе самое главное забыл...... smile:)
это файл iblock_element_edit_before_save.php находится /bitrix/php_interface/include/
ответил 28 Июнь, 13 от DarkStar (160 баллов)
00 голосов
Цитата
Mobigamer Mobigamer пишет:
знаю почему сразу это не сделали в битриксе...


В данном случае полезно указать, что речь идет о примере пользовательской формы редактирования элемента инф. блока из документации:

http://www.bitrixsoft.ru/bitrix/help/ru/source/iblock/help/ru/developer/custom.php.html

Включение такой возможности как стандартной тоже рассматривается.
ответил 29 Июль, 13 от Shadow (820 баллов)

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

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