Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 104 Ответов
  • 33193 Просмотров
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
ВНИМАНИЕ! Для слабых хостеров, которые не допускают закачку больших файлов или не хватает ресурсов для ресайза фотографий рекомендую включить в настройках JomSocial загрузку с помощью Flash-аполадера и воспользоваться рецептом, который описан в этом топике http://joomlaforum.ru/index.php/topic,103851.0.html для автоматического изменения размера изображения на стороне пользователя и закачки на сервер уже сжатых изображений.

Думаю, для многих наболевшая тема, поэтому без прелюдий. Изменения производил на версии 1.6.284 (на других не проверял)

Нам нужен файлик ../com_community/controllers/photos.php начиная со строки 125, там должна начинаться функция _storeOriginal

function _storeOriginal($tmpPath$destPath$albumId 0)

полностью заменяем эту функцию следующим кодом:

	
function 
_storeOriginal($tmpPath$destPath$albumId 0)
	
{
	
	
jimport('joomla.filesystem.file');
	
	
jimport('joomla.utilities.utility');
	
	

	
	
// First we try to get the user object.
	
	
$my
	
	
	
CFactory::getUser();
	
	

	
	
CFactory::load('helpers''image');
	

	
	
$info
	
	
getimagesize$tmpPath );
	
	
$imgType
	
image_type_to_mime_type($info[2]);
	
	
$maxWidth
	
640// ЗНАЧЕНИЕ МАКСИМАЛЬНОЙ ШИРИНЫ, ДО КОТОРОЙ СЖИМАЕМ ОРИГИНАЛ
	
	
$maxHeight
	
480// ЗНАЧЕНИЕ МАКСИМАЛЬНОЙ ВЫСОТЫ, ДО КОТОРОЙ СЖИМАЕМ ОРИГИНАЛ
	
	
$rWidth
	
	
0
	
	
$rHeight
	
0
	

	
	
// Then test if the user id is still 0 as this might be
	
	
// caused by the flash uploader.
	
	
if( 
$my->id == )
	
	
{
	
	
	
$tokenId
	
JRequest::getVar'token' '' 'REQUEST' );
	
	
	
$userId
	
	
JRequest::getVar'userid' '' 'REQUEST' );

	
	
	
$my
	
	
	
CFactory::getUserFromTokenId$tokenId $userId );
	
	
}
	
	
$config =& CFactory::getConfig(); 
	
	
 
	
	
// @todo: We assume now that the config is using the relative path to the
	
	
// default images folder in Joomla.
	
	
// @todo:  this folder creation should really be in its own function
	
	
$albumPath
	
	
	
= (
$albumId == 0)? '' DS $albumId;
	
	
$originalPathFolder
	
JPATH_ROOT DS 'images' DS JPath::clean$config->get('originalphotopath') );
	
	
$originalPathFolder
	
$originalPathFolder DS $my->id $albumPath;
	
	

	
	
if( !
JFile::exists$originalPathFolder ) )
	
	
{
	
	
	
JFolder::create$originalPathFolder, (int) octdec$config->get('folderpermissionsphoto') ) );
	
	
}
	
	
$imageSize
	
	
cImageGetSize$tmpPath ); 
	
	

	
	
if (
$imageSize->width $maxWidth || $imageSize->height $maxHeight) {
	
	
	
if (
$imageSize->width $imageSize->height || $imageSize->height <= $maxHeight) {
	
	
	
	
$rWidth $maxWidth;
	
	
	
	
$rHeight 0;
	
	
	
}
	
	
	
else {
	
	
	
	
$rHeight $maxHeight;
	
	
	
	
$rWidth 0;
	
	
	
}
	
	
}
	
	

	
	
if (
$rWidth || $rHeight 0) {
	
	
	
if(!
cImageResizePropotional$tmpPath$destPath$imgType$rWidth$rHeight ) )
	
	
	
{
	
	
	
	
JError::raiseWarning(21JText::sprintf('CC ERROR MOVING UPLOADED FILE' $destPath));
	
	
	
}
	
	
}
	
	
else {
	
	
	
if(!
JFile::copy$tmpPath$destPath ) )
	
	
	
{
	
	
	
	
JError::raiseWarning(21JText::sprintf('CC ERROR MOVING UPLOADED FILE' $destPath));
	
	
	
}
	
	

	
	
}
	
}


сохраняем файлик, проверяем... ВУАЛЯ... изображения уменьшаются!


P.S. запасайтесь плюсиками :)

UPDATE 03.02.2010:
[FIX] Изображения меньше максимального размера растягивались до максимального размера, теперь всё ОК, маленькие останутся маленькими, большие уменьшатся
[ADD] Теперь при уменьшении изображения изменения происходят по наибольшей величине, т.е. если высота больше ширины, то изображение будет уменьшено по высоте и наоборот. Для тех, кто хочет изменять только по ширине, просто поставьте значение maxHeight очень большим, тогда картинки будут изменяться только по ширине.
« Последнее редактирование: 15.03.2010, 17:39:06 от Zombeee »
*

AlexAl

  • Захожу иногда
  • 309
  • 13 / 0
я так понимаю это когда в альбомы грузишь? так?  тоесть оригинал он будет сжимать? он же просто там 2 картинки хранит оригинал и привью, и что насчет авотарок?
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
я так понимаю это когда в альбомы грузишь? так?  тоесть оригинал он будет сжимать? он же просто там 2 картинки хранит оригинал и привью, и что насчет авотарок?

честно говоря я не понял - это вопрос или рассуждение? да, он хранит 2 файла, оригинал и превьюху, раньше оригинал хранился таким, какой его закачал юзер, а теперь он будет уменьшаться до заданных размеров (только для новых фотографий, те, которые уже есть на сервере останутся без изменений), что значительно уменьшит место на серваке, ведь зачем хранить изображение 1600х1200 px, которое весит больше мегабайта, если пользователю вы все равно показываете его обрезанным до гораздо меньших размеров...

Про аватары вообще не понял вопроса... они и сейчас отлично уменьшаются в jomsoсial до нужных размеров 160х160px - большие и 64х64 маленькие
*

Deni

  • Захожу иногда
  • 61
  • 2 / 0
вот ты монстрилла))) мы за тобой хоть в огонь, спасибо)) Не теряй инициативы +1
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Не понимаю, зачем это надо если есть возможность в настройках уменьшить размер загружаемых фоток.
*

Hansik

  • Захожу иногда
  • 95
  • 12 / 0
Цитировать
Не понимаю, зачем это надо если есть возможность в настройках уменьшить размер загружаемых фоток.
Покажите?!
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Показываю, и уточняю - размер файла можно уменьшить. Что в принципе достаточно.

[вложение удалено Администратором]
*

Hansik

  • Захожу иногда
  • 95
  • 12 / 0
:laugh: Ну да...Это куда логичнее и куда удобнее, чем указать явное разрешение изображения...
Вы кстати попробовали воспользоваться этим ограничением?
Думаю, что нет. Эта настройка ограничивает загружаемые файлы. Если вы попробуете загрузить файл с большим размером, приложение его просто не пустит, а не уменьшит...

П.с. Вы уж простите за иронию, не удержался...
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Ха, и будут у тебя на серваке по мегабайту фотки храниться, а нафига? - это первое
Второе, фотография со среднестатистического фотоаппарата 8 мегапикселей весит около 3Мб, ты думаешь пользователи захотят их уменьшать ручками? многим проще будет вообще ничего не выкладывать на сайт...

Сейчас же по сути ты можешь разрешить им хоть 10Мб загружать, но на сервак к тебе упадет фотка размером до 100Кбайт... и юзеры довольны и сервак не забит
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Да нет проблем, я просто высказал свое мнение. Можете сколько угодно иронизировать, мне по барабану :)
*

Darknemo

  • Захожу иногда
  • 223
  • 2 / 0
Не понимаю, если тут изменениям подвергается всего 1 файл, почему мы до сих пор не можем дождаться этого от разработчиков? Ведь действительно большой минус этой галереи..
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Не понимаю, если тут изменениям подвергается всего 1 файл, почему мы до сих пор не можем дождаться этого от разработчиков? Ведь действительно большой минус этой галереи..

я честно говоря вообще не понимаю зачем они хранят оригиналы, а потом ещё кидают в другую папку ресайзнутые фотки в нескольких вариантах... у меня вот такие файлы есть в папке /images/photos/../../:

Код
rsz_1200_730_2b519fe23bef45dbc099a398.jpg
rsz_440_730_2b519fe23bef45dbc099a398.jpg
rsz_460_720_2b519fe23bef45dbc099a398.jpg
rsz_460_730_2b519fe23bef45dbc099a398.jpg
rsz_780_470_2b519fe23bef45dbc099a398.jpg

это одна и также картинка только в разных разрешениях :) видимо ресайзы создались когда я экспериментировал с отображениями фотки в шаблоне photos.photo.php... надо, кстати, посмотреть, нафига там так делается...
*

Provolod

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Работает офигенно. Файлы по 4 метра ужимает до 40 кб с хорошим качеством для своего разрешения. Плюс отлично вписываться стало все в дизайн. Нереальное спасибо :)
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
ну вы мне чужих заслуг не приписывайте :) алгоритм сжатия я не писал, всё это уже было в JomSocial, я просто подключил нужные функции в нужные места :) пользуйтесь!
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
Работает хорошо. Остался маленький аппендикс...
Фотки дублируются в папках originalphotos и photos.
Причем в photos изображение генерируется при первом просмотре фотографии.

Как исправить? Смысл дубликации? И нагрузка на сервак...
Всё есть в тебе. Реализовывайся.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Работает хорошо. Остался маленький аппендикс...
Фотки дублируются в папках originalphotos и photos.
Причем в photos изображение генерируется при первом просмотре фотографии.

Как исправить? Смысл дубликации? И нагрузка на сервак...

да вообще идиотская система там, они на лету генерируют среднее изображение в пропорциях 16/12 от максимальной ширины экрана браузера и складывают его в папку photos, именно для этого они и хранят оригиналы, чтобы из них в любой момент сделать максимально большое для вашего монитора среднее изображение. Но где они вообще такую идею исполнения галереи нашли, я не представляю - это что-то новое и хорошо бы, чтобы не прижилось в дальнейшем...
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
Может как то лечится?
Всё есть в тебе. Реализовывайся.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
всё лечится, нужно только время :)
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
всё лечится, нужно только время :)
А к чему приводит эта манипуляция? http://joomlaforum.ru/index.php/topic,85349.msg535761.html#msg535761
Всё есть в тебе. Реализовывайся.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
судя по всему как раз таки и создает те самые средние изображения в том случае, если ширины изображения больше, чем то, которое рассчитал скрипт относительно ширины экрана пользователя, а если они не больше, то тупо копирует оригинальное изображение... но просто отключить это не получится, т.к. в итоге то мы смотрим фотки из папки photos,  а не originalphotos, так что надо сделать так, чтобы оригиналы сразу записывались в папку originalphotos, потом уже отлюкчить функцию ресайзинга на лету... и ещё чтобы всё это не конфликтовало с остальными частями скрипта...
*

Hansik

  • Захожу иногда
  • 95
  • 12 / 0
А что если просто после всех ресайзов удалять оригиналы?!

Проверил. Можно удалять оригиналы. Я не нашел - для чего они хранятся.
« Последнее редактирование: 22.02.2010, 22:27:36 от Hansik »
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
А что если просто после всех ресайзов удалять оригиналы?!

Проверил. Можно удалять оригиналы. Я не нашел - для чего они хранятся.

там есть скриптик gallery.js, вот там есть хитрый jQuery запросик, мол он измеряет ширину твоего экрана и максимально под него создает среднее изображение из оригинала и делается это на лету, либо берется уже готовое из папки photos... т.к. у тебя экран всегда один и тот же, у тебя этот процесс один раз прошел и теперь не повторяется, а ты для эксперимента сожми окошко браузера и открой фотогалерею, в папке photos у тебя появится ещё одно среднее изображение с другой шириной (это в том случае, если оригинал больше ширины окна браузера)
*

formax1986

  • Захожу иногда
  • 54
  • 0 / 0
получается, из папки оригиналов можно удалять фотографии чтобы они не занимали место?
Или что-нибудь не будет работать?
« Последнее редактирование: 27.02.2010, 09:05:24 от formax1986 »
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
а фиг его знает :) я не проверял :)
*

formax1986

  • Захожу иногда
  • 54
  • 0 / 0
блин жалко, ни охото рисковать сайтиком...
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
блин жалко, ни охото рисковать сайтиком...

а что мешает переименовать папку originalphotos например в originalphotos1 и создать пустую папку originalphotos, а затем проверить, будет работать сайт или нет (при чем обязательно нужно проверить на разных разрешения браузера)? Если работает, значит оригиналы не важны, если будут ошибки, просто удаляете пустую папку, а originalphotos1 переименовываете обратно :)
*

formax1986

  • Захожу иногда
  • 54
  • 0 / 0
тоже верно. Спасибо!
*

mikkka

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
А у меня теперь другая проблема - если фотки меньше 640 на 480, он их растягивает до искомых размеров... соответственно получаются некачественные изображения.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
А у меня теперь другая проблема - если фотки меньше 640 на 480, он их растягивает до искомых размеров... соответственно получаются некачественные изображения.

поправил код, измените у себя!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

502 ошибка при загрузке изображений - решено

Автор Vikitos

Ответов: 2
Просмотров: 3064
Последний ответ 24.12.2013, 00:05:58
от Vikitos
[Решено] Плагин JG Casino v.1.0

Автор 321

Ответов: 1
Просмотров: 2055
Последний ответ 11.06.2012, 12:03:43
от 321
[Решено] Как сделать блок с видео справа?

Автор 321

Ответов: 0
Просмотров: 1745
Последний ответ 10.05.2012, 20:56:44
от 321
[Решено] Плагин "Latest Video" не отображает превью картинок

Автор 321

Ответов: 1
Просмотров: 1628
Последний ответ 12.04.2012, 17:07:57
от 321
[Решено] длинные сообщения в ленте активности (включая статус)

Автор bfox

Ответов: 50
Просмотров: 10182
Последний ответ 26.12.2011, 23:20:10
от Annaweb