Я знаю, что с CI было много написано о создании эскизов и тому подобном, но я хотел объяснить, что я сделал, и посмотреть, какой совет по наилучшей практике я смог найти. Вот моя история ...
В настоящее время у меня есть сайт, который позволяет пользователям загружать коллекции фотографий в проекты, которые они создали после первого создания учетной записи. После создания учетной записи сайт генерирует папки для пользователей следующим образом для каждого из пяти предварительно определенных проектов:
/ студентов / имя пользователя / project_num / изображения / превью /
(Это означает, что в предварительно созданной папке студентов, имя пользователя, имя_проекта, папки с изображениями и превью создаются рекурсивно пять раз.)
Когда пользователь загружает изображения в проект, у меня есть контроллер галереи, который загружает полные изображения в папку изображений для project_num, а затем создает уменьшенный эскиз, который сохраняет его соотношение. Пока все хорошо.
На главной странице сайта, где отображаются эти миниатюры и полные изображения, у меня возникла небольшая ошибка, и я подумал, что могу просто вывести полное изображение при изменении его размера с помощью css для изображения среднего размера. что приведет к полноразмерному изображению при нажатии.
(Чтобы было понятно, путь таков: нажмите на миниатюру—> загрузите масштабированное полноразмерное (среднее) изображение через ajax в область отображения над большими пальцами—> нажмите на изображение среднего размера—> загрузите полноразмерное изображение через лайтбокс или что-то в этом роде.)
У меня все работает до этого момента, за исключением того, что, как можно себе представить, изменение размеров полноразмерных изображений с помощью css не поддерживает соотношение сторон для больших пальцев, а это значит, что мне нужно найти лучший способ изменить их размер.
Размышляя об этом, я подумал, что у меня есть два варианта:
Я могу изменить размер изображения на лету, когда пользователь нажимает на миниатюру, чтобы загрузить изображение среднего размера через ajax. (У меня есть метод 'get_image ($ url)' в моем контроллере галереи, который просто загружает представление с тегом изображения и источником изображения, передаваемым на него, и т. Д.) Я подумал, что, возможно, я мог бы сначала отправить его в мою модель галереи, изменить размер это там на лету, и отправьте его на просмотр. Проблема, с которой я сталкиваюсь, состоит в том, что изменение размера на лету и отображение его дает мне необработанные данные изображения (я извиняюсь, я не знаю, что это правильный термин). Я пытался использовать data_uris для форматирования необработанных данных во что-то эхо, но безуспешно. Возможен ли этот метод?
Второй вариант, который я рассмотрел, заключался в создании второго эскиза среднего размера, когда пользователь загружает изображение с параметром keep_ratio, установленным в значение true. Этот метод несколько менее идеален, учитывая, что при предоставлении пользователю возможности удалить свои проекты мне нужно будет отсканировать дополнительный набор изображений для удаления. Определенно, не такая уж и большая сделка, но я решил, что чего-то такого можно избежать, создав изображение среднего размера на лету.
Надеюсь, я был ясен в своих объяснениях, если долго скучал! Мне очень любопытно посмотреть, какие предложения есть у людей о том, как лучше всего с этим справиться.
Большое спасибо за чтение, и любые предложения очень ценятся!
Стив К.