Comments 96
то-же, но на жкваре
github.com/ionelmc/jquery-gp-gallery
github.com/ionelmc/jquery-gp-gallery
Да, не натыкался раньше.
Пол года назад я этим тоже интересовался: linguistic-suffocation.org/lab/tile/
У моего алгоритма иногда бывают проблемы с последними несколькими строчками
У моего алгоритма иногда бывают проблемы с последними несколькими строчками
У вас количество картинок в ряду разное, как и на G+, а у автора статьи, как я понял, это самое количество фиксировано. То есть ваш вариант как раз что надо, а у автора статьи задача изначально слишком упрощена.
Впрочем, так совпало, что я вчера вечером занимался тем же самым и накидал свой простенький алгоритм, который делает с разным количеством картинок в ряду при определенных границах по высоте. И уже щас чужие варианты брать не хочется :)
Впрочем, так совпало, что я вчера вечером занимался тем же самым и накидал свой простенький алгоритм, который делает с разным количеством картинок в ряду при определенных границах по высоте. И уже щас чужие варианты брать не хочется :)
Еще одно: эстетически идеальное решение этой проблемы нам недоступно — это 2D bin packing problem (http://en.wikipedia.org/wiki/Bin_packing_problem). Хотя у нас проблема модифицированная — мы можем пропорционально менять размер, в отличии от задач загрузки контейнеров какой-нибудь баржи или кузова фуры.
Ну это, если честно, задачу меняет координально и ничего общего с изначальной, насколько я считаю, уже здесь нет
Кардинально, товарищи, кардинально.
Может кто-то все же скажет, почему он со мной не согласен?
Физически проблема другая, а математически, на мой взгляд, она упрощается дополнительной степенью свободы — параметром масштаба для каждого прямоугольника. Может статься, что она неплохо решаема.
Круто, я так же думал. Вы тестировали на случайных наборах? Не возникает в конце не до конца заполненых рядов?
Протестировал
Сервер долго думал (секунд 15)
Картинки показались, как и планировалось, выровненные
Еще вылезла ошибка — Warning: Division by zero in /home/squie198/public_html/imagemos.php on line 160
Лучше на javascript сделать это, пусть браузер сам думает, нечего сервер нагружать
Сервер долго думал (секунд 15)
Картинки показались, как и планировалось, выровненные
Еще вылезла ошибка — Warning: Division by zero in /home/squie198/public_html/imagemos.php on line 160
Лучше на javascript сделать это, пусть браузер сам думает, нечего сервер нагружать
Самое интересное, что на локалке все нормально, и деления на ноль не происходит. Сейчас перепроверю.
что за мода выкладывать ошибку с полным путем? Неужели нельзя оставить только имя файла и строку с ошибкой. Вы для кого полный путь до файла показываете?
А почему нет собственно?
Full Path Disclosure (FDI)
(https://www.owasp.org/index.php/Full_Path_Disclosure)
(https://www.owasp.org/index.php/Full_Path_Disclosure)
Ну если не выкладывать, автор может думать, что у него этой проблемы нет, хотя она есть. Так что как раз лучше выкладывать.
/var/www/test.php
Ломайте.
Ломайте.
Вы статью прочли?
Там в статье, кстати, рассказано как добиться ошибки, но не то, что это может за собой повлечь.
Да, прочёл, но к сути моего комментария это не относится. Как, впрочем, и все комментарии из данного дерева до 2го уровня включительно.
А суть такова: паранойя в ИТ это хорошо и замечательно, но когда предоставленных кем-либо данных явно недостаточно для осуществления взлома (скажем, если человек тестировал у себя на виртуалке) либо же они публично доступны (например, демо автора) — это уже перебор. В первом случае это не опасно, а во втором любой сможет получить нужные данные.
А об уязвимостях в работающих системах лучше репортить в личку, да.
А суть такова: паранойя в ИТ это хорошо и замечательно, но когда предоставленных кем-либо данных явно недостаточно для осуществления взлома (скажем, если человек тестировал у себя на виртуалке) либо же они публично доступны (например, демо автора) — это уже перебор. В первом случае это не опасно, а во втором любой сможет получить нужные данные.
А об уязвимостях в работающих системах лучше репортить в личку, да.
>> Лучше на javascript сделать это, пусть браузер сам думает, нечего сервер нагружать
Да ладно вам, человек просто набросал алгоритм на коленке на том, на чем ему удобнее. Никто не предлагает использовать это в том виде в котором оно есть.
Да ладно вам, человек просто набросал алгоритм на коленке на том, на чем ему удобнее. Никто не предлагает использовать это в том виде в котором оно есть.
А можно было просто использовать jQuery Masonry.
Масонри, как по мне, не справляется с основной задачей: плотно заполнить пространство. Да и расчитан он на текстовую информацию, которая не поддается масштабировке по понятным причинам. Хотя штука достойная, я согласен
не совсем то, я его пытался подкрутить для вывода фоток как гугел+, выходило, что легче написать отдельный скрипт
начал писать, потом случайно наткнулся на тот, что указал выше
есть там правда баг с последней фоткой в ряду, у себя пофиксил, но корявенько, как доведу до разумного вида — обязательно закину пул реквест
начал писать, потом случайно наткнулся на тот, что указал выше
есть там правда баг с последней фоткой в ряду, у себя пофиксил, но корявенько, как доведу до разумного вида — обязательно закину пул реквест
1) Было интересно реализовать, как минимум.
2) Для простоты, не хотел усложнять код.
3) Вывел ключевой момент кода, в котором идет подсчет. По ссылке есть полное демо.
4) Не привык я к IDE, работаю в блокноте, по старинке.
2) Для простоты, не хотел усложнять код.
3) Вывел ключевой момент кода, в котором идет подсчет. По ссылке есть полное демо.
4) Не привык я к IDE, работаю в блокноте, по старинке.
4) долго плакал… Милейший, вам памятник нужно воздвигнуть, и почетное звание: «Увидел Ад, и не устрашился».
> работаю в блокноте
Самое ужасное для меня при работе с блокнотом — было перебивание табуляции. Что-то поменял, и все: во имя красивого оформления перебивай n-строчный блок на один-два отступа вправо/влево. Не сильно замечал, но когда перешел на notepad++, как в раю оказался.
Самое ужасное для меня при работе с блокнотом — было перебивание табуляции. Что-то поменял, и все: во имя красивого оформления перебивай n-строчный блок на один-два отступа вправо/влево. Не сильно замечал, но когда перешел на notepad++, как в раю оказался.
4) а Вы, простите, стирает одежду ручками в тазике, как это делали наши деды с бабками? Попробуйте контрольный вам, и тот удобнее.
- Посмотрите, как гугл картинки выглядят без скрипта, как в 00-х ) Даже корпорация добра не делает это на серверах, ибо не выгодно.
1. О посетителях без анлимов некоторые программеры забывают, а жаль — таких очень много
2. Это тестовый код, зачем здесь что либо выносить?
3. Код оформлен в виде кода, который нормальный программер вполне чегко прочитает — что еще надо?
4. И что что не определены переменные? Это ПЫХ, можно не заморачиваться с мелочами
Удачи в дальнейшем развиитии программирования — статус нуба — это поправимо ;)
2. Это тестовый код, зачем здесь что либо выносить?
3. Код оформлен в виде кода, который нормальный программер вполне чегко прочитает — что еще надо?
4. И что что не определены переменные? Это ПЫХ, можно не заморачиваться с мелочами
Удачи в дальнейшем развиитии программирования — статус нуба — это поправимо ;)
Спасибо комментирующим) Заложил даже больше ради комментов, чем оригинального решения) Хотя автору тож спасибо)
Разве float: left + fixed height не решит проблему или я что-то не понял?
Сервер будет плакать кровавыми слезами от такого скрипта.
А тут можно посмотреть, чем кормят скрипт: squier13.ru/upload/.
Блин какая радость =) А вот автор мог бы предугадать это и сделать удаление картинок после ухода со страницы или обновления
Автор наверняка проводил эксперимент с сообществом — интересовался, чего ему там закачают. Либо уже все знал, и просто хотел создать/пополнить свою коллекцию пор… Котят!
Специально не скрывал)
в общем — есть предложение!
В связи с наступлением НГ2012 — собрать медиа хабра коллекцию картинок.
Т.е. народ присылает картинки на некий ресурс символизируя позитив — остальные могут просматривать оную этот позитив приумножая. Коллекция не будет аналогом гугла так как выборка будет создаваться именно людьми а не поисковиком.
В связи с наступлением НГ2012 — собрать медиа хабра коллекцию картинок.
Т.е. народ присылает картинки на некий ресурс символизируя позитив — остальные могут просматривать оную этот позитив приумножая. Коллекция не будет аналогом гугла так как выборка будет создаваться именно людьми а не поисковиком.
20 случайных выбраных кликов, ни одних сисек, я удивлен
Очевидно же, что с javascript это сделать лучше
Ну прям уж фантастически сложные формулы… Топик ни о чем.
Могли бы хотя бы пару эвристик прикрутить для того, чтобы постараться найти такое разбиение по строкам, чтобы все уровни были одной ширины.
По коду было уже достачно замечаний выше, добавить особо нечего.
Могли бы хотя бы пару эвристик прикрутить для того, чтобы постараться найти такое разбиение по строкам, чтобы все уровни были одной ширины.
По коду было уже достачно замечаний выше, добавить особо нечего.
Собственно что мешает вам самому «прикрутить пару эвристик» и выложить сие на всеобщее обозрение? Или только говорить мастер?
есть такая вещь замечательная — кроп
Warning: Division by zero in /home/squie198/public_html/imagemos.php on line 161
И этот топик в «лучшее за 24 часа». Я сам пхп-быдлокодер и обычно плюсую топики в блоге PHP почти их не читая. Но не настолько же, чтобы эхать тег img и вычислять его width и height, да ещё в style без ресайза собственно картинки через imagemagik или gd…
А представьте, чем будет рыдать сервер, если ему перед отрисовкой (ибо сортировка может менятся и заранее не выйдет) страницы еще и меджить картинка.
В чём она может меняться при использовании в качестве галереи? Загрузили новый файл в альбом, пересчитали, отресайзили, и лежит до следующей загрузки или очистки кэша.
Рандомный вывод или вывод результатов поиска — согласен, но тут уж, имхо, вообще на клиенте ресайзить надо. Рандом и поиск и так тяжелые операции, чтоб их чем-то ещё нагружать.
Рандомный вывод или вывод результатов поиска — согласен, но тут уж, имхо, вообще на клиенте ресайзить надо. Рандом и поиск и так тяжелые операции, чтоб их чем-то ещё нагружать.
В Google Images они все-таки обрезаются. Как же иначе ранжировать их по значимости?
Пушистые нямки на главной!
Котики на Хабре!
Не понимаю, как вообще могла прийти в голову идея делать это на серверсайде. Ну и код конечно не ахти: лапшичка, да с зашитой логикой представления.
Автор хотел услышать идеи и доработки — я бы советовал хотя бы этот код переписать по-человечески, ну а в продакшене использовать клиент-сайд решения для этой задачи.
Автор хотел услышать идеи и доработки — я бы советовал хотя бы этот код переписать по-человечески, ну а в продакшене использовать клиент-сайд решения для этой задачи.
Я пользуюсь либой code.google.com/p/phpresizer/ тоже самописанная
Думаю автор сможет от туда много чего себе перенять или просто взять эту либу на вооружение.
1. Поддерживает кеширование откадрированных изображений,
2. работает с полупрозрачными GIF, PNG, JPG
2. Поддерживает движки:
GD (Graphics Draw) library
ImageMagick
GraphicsMagick
3. При кадрированиии можно управлять параметрами:
«width»=>170, // желаемая ширина аватарки
«height»=>210, // желаемая высота аватарки
«aspect»=>false, // сохранять ли пропорции исходного изображения
«crop»=>95, //часть центральной части которую следует увеличить (прозумировать центр)
«quality» => 75 // качество JPEG
«background» => «ff00ae» // цвет котором стоит залить свободные области при $aspect = true;
'zoomSmallImage'=>false, // стоит ли ресайзить маленикие изображния
'pngCompress' => 9 // степень компрессии для png
Думаю автор сможет от туда много чего себе перенять или просто взять эту либу на вооружение.
1. Поддерживает кеширование откадрированных изображений,
2. работает с полупрозрачными GIF, PNG, JPG
2. Поддерживает движки:
GD (Graphics Draw) library
ImageMagick
GraphicsMagick
3. При кадрированиии можно управлять параметрами:
«width»=>170, // желаемая ширина аватарки
«height»=>210, // желаемая высота аватарки
«aspect»=>false, // сохранять ли пропорции исходного изображения
«crop»=>95, //часть центральной части которую следует увеличить (прозумировать центр)
«quality» => 75 // качество JPEG
«background» => «ff00ae» // цвет котором стоит залить свободные области при $aspect = true;
'zoomSmallImage'=>false, // стоит ли ресайзить маленикие изображния
'pngCompress' => 9 // степень компрессии для png
Есть одна тема для tumblr, там фиксированная ширина картинок, но разная высота, и все подгружается по мере прокрутки страницы. В результате, все очень просто реализовано и без обрезок (простое уменьшение до одинаковой ширины). Хотя, не позволяет избавится от «рваного» края, но делает его эстетически привлекательным просто используя низ, а не левую сторону.
Можно немножко усложнить вам задачу. Бывают фотки слишком растянутые в ширину или в высоту. На том же G+ такие фотки кропятся, чтобы фотка не выходила за определенные границы соотношений w/h и h/w. Представьте что кто-то загрузил фотку 1000x100, или наоборот 100x1000. Вот такие как раз предварительно кропятся до определенных границ (скажем, 400x100 и 100x400), а потом уже в дело входит тот самый алгоритм, про который статья.
А зачем тут php?
когда-то писал давно нечто подобное: jQuery плагин Кирпичи
Sign up to leave a comment.
Красивый вывод изображений