Лучшая практика для изображений с Codeigniter: генерация больших пальцев или изменение размера на лету

StackOverflow https://stackoverflow.com/questions/2739513

  •  02-10-2019
  •  | 
  •  

Вопрос

Я знаю, что была хорошая сделка, написанная на миниатюре поколения и тому подобное с CI, но я хотел объяснить, что я сделал и посмотреть, какой совет лучше всего смог найти. Вот моя история ...

В настоящее время у меня есть сайт, который позволяет пользователям загружать коллекции фотографий на проекты, которые они создали после первого создания учетной записи. При создании учетной записи сайт генерирует папки для пользователей следующим образом для каждого из пяти заранее определенных проектов:

/ Студенты / Имя пользователя / Project_num / Images / Thumbs /

(Это означает, что в рамках предварительно созданного папки студентов именно имя пользователя, Project_num, изображения и большие пальцы папки создаются рекурсивно пять раз.)

Когда пользователь загружает изображения в проект, у меня есть контроллер галереи, который загружает полные изображения в папку изображений для Project_num, а затем создает меньший миниатюр, который поддерживает его соотношение. Все идет нормально.

На участке индекса сайта отображаются эти миниатюры и полные изображения, у меня было немного ошибок мозга, думая, что я мог бы просто вывести полное изображение, а затем изменяя его через CSS для изображения «среднего размера», которое будет вести на полноразмерное изображение при нажатии.

(Чтобы быть понятным, путь: нажмите на миниатюру-> нагрузки на масштабированном виде полноразмерного (среднего размера) изображение через AJAX в область дисплея над большим пальцем-> Нажмите на изображение среднего размера-> нагрузка на полное изображение через Lightbox, или что-то из этого природы.)

У меня есть все, что работает на этот момент, за исключением того, что, как можно представить, изменением полноразмерных изображений с CSS не поддерживает соотношение сторон для больших пальцев, что означает, что мне нужно найти лучший способ изменить размер их.

Подумав об этом, я полагал, что у меня были два варианта:

  1. Я мог бы разместить изображение на лету, когда пользователь нажимает миниатюру для загрузки изображения среднего размера через AJAX. (У меня есть метод «get_image ($ URL)» в моем контроллере галереи, который просто загружает вид с тегом изображения, и источник изображения передан ему и т. Д.) Я подумал, что я мог бы отправить его в свою модель галереи, изменить размер Это там на лету, и отправьте его на вид. Проблема у меня есть, это то, что изменение размера ее на лету и эхом, дает мне данные необработанного изображения (прошу прощения, я не знаю, что это правильный срок). Я пытался использовать data_uris, чтобы отформатировать необработанные данные во что-то повторяе, но без успеха. Это возможен этот метод?

  2. Второй вариант, который я считал, заключался в том, чтобы генерировать второй эскиз среднего размера, когда пользователь загружает изображение с помощью Esential_RATIO, установленным на TRUE. Этот метод немного менее идеален, учитывая, что при предоставлении способа для пользователя удалить свои проекты, мне нужно будет сканировать для дополнительного набора изображений для удаления. Не огромное дело, определенно, но что-то я понял, можно было избежать, создавая изображение среднего размера на лету.

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

Большое спасибо за чтение, и любые предложения очень ценится!

Стив К.

Это было полезно?

Решение

Вы не хотите делать что-то, как вычислительно сложно, как изменение изображения более одного раза для каждого изображения. Это слишком дорого.

Когда ваш посетитель загружает изображение, просто измените размер его дважды. Делайте большой палец и сделайте средний большой палец. Я, вероятно, также сохранил запись всех загруженных изображений в таблице базы данных где-то с Project_id и user_id в качестве зарубежных клавиш. Они избегают вам необходимости «сканировать», чтобы удалить изображения. Вы знаете, где они есть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top