Я использую RMagick и хочу, чтобы мои изображения были изменены до фиксированной ширины 100 пикселей и пропорционально масштабировали высоту. Например, если пользователь должен был загрузить 300x900px, я бы хотел, чтобы его масштабировали до 100x300px.Carrierwave - изменение размера изображения до фиксированной ширины
ответ
Просто поместите это в вашем файле загрузчика:
class ImageUploader < CarrierWave::Uploader::Base
version :resized do
# returns an image with a maximum width of 100px
# while maintaining the aspect ratio
# 10000 is used to tell CW that the height is free
# and so that it will hit the 100 px width first
process :resize_to_fit => [100, 10000]
end
end
Документация и пример здесь: http://www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit
Имейте в виду, resize_to_fit
расширим изображения, если они меньше, чем 100px. Если вы не хотите, чтобы это было сделано, замените это на resize_to_limit
.
Я использую
process :resize_to_fit => [100, 10000]
Используйте 10000
или любое очень большое число, чтобы Carrierwave знать высоту свободен, просто изменить размер по ширине.
@iWasRobbed: Я не думаю, что это правильное решение. По ссылке вы вставили о resize_to_fit
: The maximum height of the resized image. If omitted it defaults to the value of new_width.
Так что в вашем случае process :resize_to_fit => [100, nil]
эквивалентно process :resize_to_fit => [100, 100]
, который не гарантирует, что вы всегда будете получать фиксированную ширину 100px
Не будет лучшим решением быть на самом деле:
process :resize_to_fit => [100, -1]
Таким образом, вы не должны ограничивать высоту на всех
EDIT: Просто понял, это работает только с MiniMagick, для RMagick вы, кажется, не имеют никакого выбора, кроме как добавить большое количество на высоту
Обратите внимание, что '[-1, 100]' не будет работать, то есть вы не сможете создавать уменьшенные эскизы с фиксированным высотом. – lulalala
- 1. Carrierwave: изменение размера изображения до фиксированной ширины и высоты
- 2. Carrierwave Изменение размера существующего изображения
- 3. Изменение размера ширины HBox до содержания
- 4. Carrierwave изменение размера изображения перед сохранением
- 5. Mini_Magick и CarrierWave не изменение размера изображения
- 6. Изменение размера изображения Carrierwave не работает
- 7. Codeigniter изменение размера изображения с фиксированной шириной
- 8. Изменение размера изображения на PN до минимальной ширины/высоты
- 9. Изменение размера изображения относительно ширины окна просмотра
- 10. Изменение размера изображения VMware до меньшего размера
- 11. изменение размера изображения до точного размера
- 12. Как сделать HTML таблицу фиксированной ширины, когда изменение размера страницы
- 13. Установка фиксированной ширины размера изображения с pt/mm/in ANDROID
- 14. Изменение размера изображения ASP.NET
- 15. Изменение размера ШИРИНЫ UIDatePicker
- 16. Исправлено изменение размера заголовка с фиксированной шириной
- 17. Пакетные изображения обрезки до фиксированной высоты (CLI)
- 18. Динамическое изменение размера изображения
- 19. Изменение размера изображения с carrierwave игнорируя пропорции - Рельсы
- 20. Изменение размера изображения не дает никакой ошибки метода carrierwave
- 21. Масштабирование изображения до фиксированной ширины, но не сохранение соотношения сторон
- 22. Увеличение ширины элемента до ширины страницы на странице фиксированной ширины
- 23. Carrierwave: изменение размера изображений из активов
- 24. Изменение размера изображения с фиксированной шириной, но динамическая высота
- 25. Метаданные Viewport для фиксированной ширины, но масштабируются до ширины устройства
- 26. Изменение размера изображений только до определенной ширины (AppleScript или Automator)
- 27. Изменение ширины объекта на экране Изменение размера
- 28. Изменение размера анимированной ширины 100%
- 29. Загрузка и изменение размера носителя Carrierwave
- 30. Изменение размера изображения
, как указано Giang Nguyen: в отношении обработки несущей и обработки изображений '[100, nil]' кажется эквивалентным '[100, 100]'! –
спасибо, обновлено – iwasrobbed