Page 1 of 1

Тэг для уменьшения картинки средствами системы

Posted: Tue Oct 25, 2011 11:46 pm
by von-hamster
Зачем? Ответ здесь :) : http://von-hamster.ru/programmizm/php/c ... i-sistemy/

Коротко:

Cоздадим тэг, например, 'boxImage' c содержанием, которое приводится ниже. Далее на любой странице его можно вызвать следующим образом: {boxImage src='путь к картинке относительно uploads/images' [class='дополнительные классы к ссылке']
} - при этом, если у картинки не было превьюшки она создается.

Ну и напоследок - последние строчки можно изменить как угодно, я просто привел то, что у меня получилось. Основная часть до строчки с $addClass.

Code: Select all

$config = $GLOBALS['gCms']->GetConfig();
$imDir = '/lib/filemanager/ImageManager';
$root = $config['root_path'] . $imDir;

require_once($root . '/config.inc.php');
require_once($root . '/Classes/ImageManager.php');
$manager = new ImageManager($IMConfig);

$image = ltrim($params['src'], '/');
$thumb = $manager->getThumbnail($image);
if (strpos($thumb, 'thumbs.php?img') !== false) {
    $thumb = $imDir . '/' . $thumb;
}

$addClass = 'agfbx';
if (isset($params['class'])) {
    $addClass .= ' ' . $params['class'];
}
$addParams = '';
if (isset($params['align'])) {
    $addParams .= ' align="' . $params['align'] . '"';
}
echo "<a class="{$addClass}" href="uploads/images/{$image}" target="_blank">
<img src="{$thumb}" alt="" />
</a>";

Re: Тэг для уменьшения картинки средствами системы

Posted: Wed Oct 26, 2011 7:44 pm
by Hippy-core
Хорошая работа!
Но есть ведь отличный модуль CGSmartImages, и плагин image...

В любом случае это отличная иллюстрация грамотной работы с API

Re: Тэг для уменьшения картинки средствами системы

Posted: Wed Oct 26, 2011 8:38 pm
by von-hamster
Hippy-core wrote:Хорошая работа!
Но есть ведь отличный модуль CGSmartImages, и плагин image...

В любом случае это отличная иллюстрация грамотной работы с API
Ради такой простой задачи не имеет смысла подгружать целый модуль. В крайнем случае можно воспользоваться модулем Album - там уже встроены куча отображалок, и превьюшки генерятся при добавлении.

Плагин image - возможно. Но он вроде не генерит превьюшек, в описании, по крайней мере - я не увидел, а в код не лез (если ошибаюсь - подскажите).

По поводу грамотного использования - тоже не согласен - костыль на костыле. Удобнее было-бы что-то наподобии:

Code: Select all

$manager = $config = $GLOBALS['gCms']->GetImageManager();
$thumb = $manager->getThumbnail($params['src'][, width[, height]]);
...
А так приходится вытаскивать информацию по кусочкам :)

Re: Тэг для уменьшения картинки средствами системы

Posted: Tue Nov 01, 2011 11:15 am
by Hippy-core
Для превьюшки подойдет вполне:

Code: Select all

{image src="something.jpg" width=$preview_width height=$preview_height}

Re: Тэг для уменьшения картинки средствами системы

Posted: Tue Nov 01, 2011 12:10 pm
by von-hamster
Hippy-core wrote:Для превьюшки подойдет вполне:

Code: Select all

{image src="something.jpg" width=$preview_width height=$preview_height}
А он сгенерит превьюшку? Смысл именно в генерации превьюшки, если ее нет

Re: Тэг для уменьшения картинки средствами системы

Posted: Mon Nov 07, 2011 11:59 am
by Hippy-core
Точно и не кеширует )