Isso permite que você mantenha a imagem original sob uma determinada dimensão no upload, então quando você reprocessar a imagem no futuro, todos os estilos serão baseados no original redimensionado
Neste exemplo, o estilo original é mantido em 640 px de comprimento.
class Document < ActiveRecord::Base
# ommitted lines
has_attached_file :picture, styles: lambda { |attachment|
g = attachment.instance.picture_width.blank? && attachment.instance.picture_height.blank? ? {original: "640x640>" } : {}
g.merge({tiny: '25x25#', thumb: '60x60#', large: '400>'})
}, path: ":rails_root/public/system/:attachment/:id_partition/:style/:filename",
url: "/system/:attachment/:id_partition/:style/:filename", :processors => [:cropper, :rotator]
end
Você pode usar um método para substituir attachment.instance.picture_width.blank?
, para injetar o estilo original via lambda. No meu exemplo, uso uma picture_width
propriedade.
Se você carregar uma imagem com 2952x2952px, o original será reduzido para 640x640px. Então, se você carregar a imagem via document.picture.url(:original)
, ela está em 640x640px.