Как изменить размер фотографий с высоким разрешением на миниатюры? - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть сайт, где пользователь может загрузить фотографию. Я понятия не имею, как обращаться с фотографиями. Чтобы сделать миниатюру из большой фотографии с разрешением, нужно ли просто изменить ее ширину и высоту? Или есть лучший способ сделать это?

Если бы вы могли указать мне какие-либо ресурсы или дать какие-либо советы, это было бы замечательно.

Я использую Ruby on Rails, если это имеет значение. Я действительно не хочу драгоценных камней для этого, потому что я хочу научиться делать это самостоятельно.

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Для некоторых из них «изучение того, как сделать это самостоятельно» будет значительным мероприятием. Изменение размера изображения, например. Идите дальше и найдите библиотеку с открытым исходным кодом (например, гем), которая изменяет размеры изображений и просматривает ее исходный код. Это не невозможно сделать самостоятельно, но многое из этого основано на опыте, который был раньше, и т. Д. Нет ничего плохого в использовании инструмента, созданного кем-то другим, при условии, что вы понимаете, что это за инструмент делает.

Несколько моментов, которые, надеюсь, помогут вам:

  1. Придерживайтесь подхода «белого списка» поддерживаемых форматов изображений. Не просто позволяйте пользователям загружать то, что они называют изображением.
  2. Каждый поддерживаемый вами формат будет иметь свои собственные стандарты (возможно, несколько) для метаданных. Удаление данных оптом может или не может быть хорошей идеей. Например, JPEG может содержать свою ориентацию в своих данных EXIF, и если вы удалите это, вы можете эффективно повернуть изображение. Определенные поля, такие как геотеггинг, вы можете захотеть убрать в попытке защитить конфиденциальность ваших пользователей и т. Д. Опять же, посмотрите на существующие библиотеки и посмотрите, как они это делают.
  3. НЕ неявно доверяют расширению имени файла для определения типа изображения. Пользователь может создать вредоносный файл, который на самом деле не является изображением, передать его в качестве изображения не подозревающему хосту и эффективно открыть уязвимость безопасности на этом хосте, когда он пытается обработать файл как образ. Возник вопрос об определении типа файла в Ruby здесь , и я уверен, что по этому вопросу можно найти гораздо больше.
2 голосов
/ 21 декабря 2010

Дэвид хорошо ответил на вопрос, но я подумал, что смогу предоставить более конкретную информацию относительно вашего вопроса.

Используйте драгоценный камень Paperclip в сочетании с RMagick, оберткой ImageMagick для Ruby. Вы можете установить параметры постобработки и создать несколько размеров.

Если вы действительно хотите сделать это самостоятельно, посмотрите на самоцвет в https://github.com/thoughtbot/paperclip, и вы увидите, как это делает автор. Часть идеи, стоящей за Ruby on Rails, - DRTW (Не изобретай колесо). Используйте то, что там, и основывайтесь на этом. Это сэкономит ваше время и позволит вам делать больше в долгосрочной перспективе.

0 голосов
/ 21 декабря 2010

Альтернативой является использование сторонней услуги, такой как http://resizer.co (я не связан)

Замените ссылку на изображение с вашего сайта, скажем:

http://example.com/images/abc123.jpg

со следующим (для изображения 200 x 200)

http://www.resizer.co?image=http://example.com/images/abc123.jpg&w=200&h=200

Вы можете столкнуться с проблемами с искажением и несоблюдением «пропорции», но это может быть хорошим началом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...