Daiver2
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору MasterDaemon Устанавливаем размер превью-картинок самостоятельно. Рассмотрим, как устроено масштабирование картинок. Панель управления - Общие настройки - Настройки галереи: (1)Ширина галереи в пикселях = 110 (2)Автоматически изменять высоту изображений = ДА (3)Высота изображения = 90 В (1) устанавливам базовую ширину превью-картинок. В (2), если мы ставим ДА, то все картинки теряют пропорции и становятся шириной указанной в (1) и высотой указанной в (3). Если в коде мы вызываем картинку как <img src="/system/thumb.php?img_id=5">, то картинка будет с размерами, которые мы указали в Панели управления. Все остальные размеры превью-картинок указаны в файле /system/thumb.php Код: switch($_REQUEST['smode']) { case 1 : $thumb_w = $pref['thumbw'] / 2.2; $thumb_h = $pref['thumbh'] / 2.2; break; case 2 : $thumb_w = $pref['thumbw'] / 1.8; $thumb_h = $pref['thumbh'] / 1.8; break; case 'def': default: break; } | Управляющий ключ "smode". То есть, если вызвать картинку как <img src="/system/thumb.php?img_id=5&smode=1">, то наша картинка уменьшиться от первой в 2.2 раза. Аналогично, <img src="/system/thumb.php?img_id=5&smode=2"> - в 1.8 раз. Если нам надо увеличить картинку, то вместо 2.2 или 1.8 ставим число от 0 до 1 (здесь голая математика, разберетесь). Этих "smode" можно задать кучу, например, вот как этот блок будет выглядеть, если добавить несколько форматов превью: Код: switch($_REQUEST['smode']) { case 1 : $thumb_w = $pref['thumbw'] / 0.5; $thumb_h = $pref['thumbh'] / 0.5; break; case 2 : $thumb_w = $pref['thumbw'] / 0.9; $thumb_h = $pref['thumbh'] / 0.9; break; case 3 : $thumb_w = $pref['thumbw'] / 1.2; $thumb_h = $pref['thumbh'] / 1.2; break; case 4 : $thumb_w = $pref['thumbw'] / 1.8; $thumb_h = $pref['thumbh'] / 1.8; break; case 5 : $thumb_w = $pref['thumbw'] / 2.2; $thumb_h = $pref['thumbh'] / 2.2; break; case 6 : $thumb_w = 100; $thumb_h = 100; break; case 'def': default: break; } | Как сразу видно, при smode=6, нам не важны настройки по-умолчанию, мы сразу жестко ограничиваем превью размером 100х100 пикселей. Единственный минус при этом – теряются пропорции картинки, и если у нас на картинке размером 640 на 480 был круг, то после обработки будет овал. Есть решение этой проблемы. Находим в файле /system/thumb.php код: Код: if(GALLERYTHUMB_METHOD == "imagecopyresampled") { @imagecopyresampled($ziel, $quelle, 0, 0, 0, 0, $w, $h, imagesx($quelle), imagesy($quelle)); } else { @imagecopyresized($ziel, $quelle, 0, 0, 0, 0, $w, $h, imagesx($quelle), imagesy($quelle)); } | и заменяем его на следующий Код: if ($_REQUEST['smode'] == 6) { $width = $thumb_w; $height = $thumb_h; list($width_orig, $height_orig) = getimagesize($q); $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($q); 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); $ziel=$image_p; } else { if(GALLERYTHUMB_METHOD == "imagecopyresampled") { @imagecopyresampled($ziel, $quelle, 0, 0, 0, 0, $w, $h, imagesx($quelle), imagesy($quelle)); } else { @imagecopyresized($ziel, $quelle, 0, 0, 0, 0, $w, $h, imagesx($quelle), imagesy($quelle)); } } | то есть просто дополняем его условием, что если smode=6, то делать картинку квадратной. И теперь у нас картинка не меняя пропорций становиться квадратной и нужного размера. Примеры: Список новых галерей на главной: (Koobi 5.х) Файл /inc/functions.php, (Koobi 6.0) Файл /functions/Func.Gallery.php, ищем function newgals($param), и в этом блоке меняем smode=1 на нужное. Список всех галерей: Файл /templates/standard/gallery/galleryshow.tpl Меняем smode в строке Код: <a href="{$item->glink}"><img src="system/thumb.php?img_id={$item->galthumb}&smode=1" alt="" border="0" /></a> | Галерея - следующее/предыдущее изображение: Файл /templates/standard/gallery/gallerypic.tpl Меняем smode в двух строках Код: <img class="absmiddle" src="system/thumb.php?img_id={$next_pic->id}&smode=1" alt="" border="0" /></a> <img class="absmiddle" src="system/thumb.php?img_id={$prev_pic->id}&smode=1" alt="" border="0" /></a> | MasterDaemon прошу обратить внимание, ник Daiver пишется через А, прошу исправить в модулях в поставке Koobi 6.0.2 - мой модуль RSS ))) |