Сейчас аватары просто уменьшаются в соответствии с заданным размером. И соотношения высоты/ширины не изменяются, поэтому получаются разновеликие аватары, и в различных модулях это смотрится довольно коряво. Юзеры же не будут подбирать строго квадратные или с заданными пропорциями сторон фотки. В JomSocial (может, и еще где, не знаю), реализовано поудобнее — фотки не просто уменьшаются под аватар, они еще и обрезаются в соответствии с заданным размером. И обрезка происходит не с угла, типа отрезать все лишнее, а по центру, то есть "отсеченных" голов или ног на аватарках не получается. И все аватарки строго заданного размера.
Хм… С превьюшками фоток дела в этом плане получше обстоят.
Уменьшение с обрезкой вместо простого уменьшения по одному из ребер
#2
17 июня 2011 в 11:59
Тоже интересен данный вопрос… Кто поделится?
#3
17 июня 2011 в 12:32
Till, EVV, создайте тикет в багтрекере — ибо даже если поделиться, потом это придется под каждый релиз еще подгонять после обновления. Мысль здравая…
Сегодня в 18:08
#4
17 июня 2011 в 12:44
/components/users/frontend.php ищем (~903 строка):
добавляем параметр:
маленький аватар будет загружаться квадратным (если ориентация изображения горизонтальная, вырезается из центра, если вертикальная сверху /*шанс что голова окажется в этом месте больше)))*/)
@img_resize($uploadfile, $uploadthumb, $smallw, $smallw);
@img_resize($uploadfile, $uploadthumb, $smallw, $smallw, $is_square=true);
Я зделал вот так:
Так было в 1.6.2. Только я непонимаю зачем это убрали.
А в SE-4 вообще круто зделали. Там после загрузки большого аватара, можно зделать маленький. Перемещая, увеличивая или уменьшая квадратик на большом аватаре. Всё что внутри квадратика, будет маленьким аватаром. Остальное обрезается.
@img_resize($uploadfile, $uploadthumb, $smallw, $smallw, true);
А в SE-4 вообще круто зделали. Там после загрузки большого аватара, можно зделать маленький. Перемещая, увеличивая или уменьшая квадратик на большом аватаре. Всё что внутри квадратика, будет маленьким аватаром. Остальное обрезается.
#6
17 июня 2011 в 15:40
Кстати, • Mike •, как правильно в тпл шаблоне указать нужный размер аватара?
вот кусок кода для примера:
вот кусок кода для примера:
{if $cfg.avatar} <a href="/users/{$id}/avatar.html">{$avatar}</a> {/if}
Пробую как описано здесь, но делаю что то не так...одним из способов как тут например топик
выдает ошибку синтаксис эрор...
файл usercore добавляем новую функцию
в файле вашего модуля заменяем блок
function usrImageHS($user_id, $usr_imageurl, $width='100px', $height='250px'){ if ($usr_imageurl && @file_exists($_SERVER['DOCUMENT_ROOT'].'/images/users/avatars/'.$usr_imageurl)){ return ''; } }
на простой вызов новой функции:
$usr['avatar'] = usrImageNOdb($usr['id'], 'medium', $usr['imageurl'], $usr['is_deleted']); $pattern = "//i"; $replacement = '';
$usr['avatar'] = usrImageHS($usr['id'], $usr['imageurl'], $width='100px', $height='250px');
можешь подсказать как прописать размеры аватара в такой записи?
{if $cfg.avatar} <a href="/users/{$id}/avatar.html">{$avatar}</a> {/if}
#9
17 июня 2011 в 21:48
как один из вариантов альтернативный модуль — это, если, код модуля — тогда можно обратится в свойствах css как module_id_XX a img {width: 00px; height: 00px;}
если, это компонент, то кое-что придётся исправить в ядре, чтобы добиться того же самого эффекта…
если, это компонент, то кое-что придётся исправить в ядре, чтобы добиться того же самого эффекта…
#10
18 июня 2011 в 18:04
сделал немного проще
и в стилях добавил нужное условие)
{if $cfg.avatar} <span class="avatar"> <a href="/users/{$id}/avatar.html">{$avatar}</a> </span> {/if}
#11
7 октября 2012 в 07:29
А если есть желание, чтобы миниатюры загружаемых фото (не только аватары) и вертикальные обрезались по середине, нужно открыть файл /includes/graphic.inc.php найти в нем код:
и заменить на:
Рискуем порубать головы, но лично мне такой вариант больше нравится. Еще бы найти время разобраться, как ползунок прикрутить…
// вырезаем квадратную верхушку по y, if ($new_width<$new_height) imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $maxwidth, $maxwidth, min($new_width,$new_height), min($new_width,$new_height));
Рискуем порубать головы, но лично мне такой вариант больше нравится. Еще бы найти время разобраться, как ползунок прикрутить…