Uso RMagick e desidero ridimensionare le mie immagini a una larghezza fissa di 100 px e ridimensionare l'altezza in modo proporzionale. Ad esempio, se un utente dovesse caricare un 300x900px, mi piacerebbe che fosse ridimensionato a 100x300px.Carrierwave - Ridimensionamento delle immagini a larghezza fissa
risposta
Basta mettere questo nel vostro file di uploader:
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
documentazione e l'esempio qui: http://www.imagemagick.org/RMagick/doc/image3.html#resize_to_fit
tenere a mente, resize_to_fit
scalerà le immagini se sono più piccoli di 100px. Se non vuoi che lo faccia, sostituiscilo con resize_to_limit
.
Io uso
process :resize_to_fit => [100, 10000]
Usa 10000
o qualunque numero molto grande di far conoscere Carrierwave l'altezza è gratuito, basta ridimensionare la larghezza.
@iWasRobbed: Non penso che sia la soluzione corretta. Secondo il link è stato incollato su resize_to_fit
: The maximum height of the resized image. If omitted it defaults to the value of new_width.
Quindi nel tuo caso process :resize_to_fit => [100, nil]
equivale a process :resize_to_fit => [100, 100]
che non garantisce che sarà sempre ottenere la larghezza fissa di 100px
Non sarebbe una soluzione migliore in realtà essere:
process :resize_to_fit => [100, -1]
in questo modo non c'è bisogno di limitare l'altezza a tutti
EDIT: appena realizzato questo funziona solo con MiniMagick, per RMagick ti sembra di avere altra scelta se non per aggiungere un gran numero all'altezza
Nota che '[-1, 100]' non funzionerebbe, il che significa che non è possibile creare miniature di immagini ad altezza fissa. – lulalala
come indicato da Giang Nguyen: per quanto riguarda l'elaborazione carrierwave e l'elaborazione dell'immagine, '[100, nil]' sembra essere equivalente a '[100, 100]'! –
grazie, aggiornato – iwasrobbed