Как запретить загружать фото на аватар, менее заданного размера?

#1 25 мая 2013 в 00:17
Добрый вечер, уважаемое сообщество. Столкнулся с проблемой, как запретить загрузку на аватар картинки, менее чем заданная. То-есть выставить например 200х200рх, и если пользователь захочет загрузить картинку 150х250рх — всплывет сообщение — ошибка загрузки, изображение слишком маленькое. Что то типа:

  1. if(!($size[200] > ****)){
  2. cmsCore::addSessionMessage('<strong>' . $_LANG['ERROR'] . ':</strong> Ваше изображение слишком мало для использования в качестве аватара!', 'error');
И вот никак не пойму как правильно написать…
#2 25 мая 2013 в 13:15
Все равно не выходит… Кто нибудь делал похожее для себя? Поделитесь пожалуйста…
#3 25 мая 2013 в 13:53
А в настройках профилей? Там вроде есть размеры по ширине настроек для маленького и по ширине и высоте для большого. ИМХО, если будет больше — она обрежется, если меньше — растянется и не каждому это придется по вкусу. Можно в правилах прописать размеры и пусть читают и не удивляются.
#4 25 мая 2013 в 15:37

если меньше — растянется и не каждому это придется по вкусу. Можно в правилах прописать размеры и пусть читают и не удивляются

Anabiotick
Правила мало кто воспринимает, хотя написал крупным шрифтом рекомендуемый размер при загрузке авки. Дело в том, что при загрузке мелких изображений, они растягиваются и перекашивают профиль. Вот и хочется это в корне запретить.
#6 25 мая 2013 в 17:30

Один из возможных вариантов

Pasha
Спасибо, но не видел там версии для 1.10.1>, использовал вот этот вариант — ТЫЦ, преимущество — сохранение аватарок в отдельную папку. Но при загрузке все равно проходят мелкие изображения, так как используется стандартный загрузчик. Вот в нем и хотел встроить ограничение на загрузку, но это оказалось не так уж и просто.
#7 25 мая 2013 в 18:31

но это оказалось не так уж и просто.

Но и сверхсложного ничего нет. Навскидку алгоритм примерно такой:
  1.  
  2. // Собственно процедура загрузки файла
  3. if (cmsCore::moveUploadedFile($source, $uploadphoto, $errorCode)) {
  4. // Теперь смотрим его размеры
  5. $resolution = getimagesize($uploadphoto);
  6. // И если размеры меньше чем нужно, то удаляем его к чертям и выводим сообщение
  7. if (($resolution[0] < заданная ширина) || ($resolution[1] < заданная высота)) {
  8. @unlink ($uploadphoto);
  9. cmsCore::addSessionMessage('Текст пугающего сообщения', 'error');
  10. cmsCore::redirect('/users/'.$id.'/avatar.html');
  11. ................
  12.  
#8 25 мая 2013 в 22:39

Навскидку алгоритм примерно такой:

Pasha
Спасибо большое за подсказку! Но не срабатывает
  1. @unlink ($uploadphoto);
Предупреждение появляется, а аватарка все равно загружается

и
  1. @unlink($uploadfile);
тоже не удаляет картинку....

UPD. Все таки проверка не работает… Либо все время предупреждение и невозможность загрузить, либо все загружается...

Менял значения $resolution = getimagesize($uploadphoto); и $size = getimagesize($uploadfile); и не срабатывает определение.
#9 25 мая 2013 в 23:32
  1. if($inCore->moveUploadedFile($source, $uploadfile, $errorCode)){
Как из $uploadfile взять размер resolution?
#10 26 мая 2013 в 00:48
Aleks Shultz, я не уверен, но вроде нужно на стороне юзера проверять с помощью js или флешь...
Типа вначале на js/флешь выбираем файлы и проверяем их, и выводим ошибку если нужно, если все ок, то только потом передаем на сервер для дальнейшей обработки)

пс: могу очень сильно ошибаться)

пс: хотя и после загрузки на сервер можно… но как то оно по логике не то))
#11 26 мая 2013 в 01:19
reload, было бы неплохо, но в текущей реализации загрузки, размеры фото на стороне клиента проверить невозможно.
Aleks Shultz, код приведенный мной выше работает без проблем, но тем не менее нужно понимать, что это не является самодостаточным решением, это всего лишь маленький кусочек, отвечаюий за определение размера. Если самостоятельно решить в полной мере задачу не можете, то спросите у народа, наверняка у кого-то на руках остались исходники моего хака, сссылку на который я вам давал в самом начале. Там все это уже сделано, причем делалось все это именно для версии 1.10…
#12 31 мая 2013 в 00:18

то спросите у народа

Pasha
Поспрашивал, молчат как партизаны, не хотят хаком делиться)) Но срабатывающее предупреждение со страшным текстом, тоже сделало часть работы))
#13 7 июня 2013 в 00:05
Ну ничего, я не теряю надежды! v
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.