diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-02-19 16:06:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-19 16:06:12 +0100 |
commit | 66105929e07fc7ddbdb8b66696b9ce1ed5d25957 (patch) | |
tree | 325291f6c8a7804a16e898c9c56996195036f59e /app/models/concerns/account_avatar.rb | |
parent | cbb69d41f6eda4d997f7bcb89e9aef8fd8bec2e4 (diff) |
Don't resize avatars/headers if their dimensions are already right (#6508)
Also don't apply "-quality 80" option which is probably the reason for slight color differences between original and remote image (because it would apply it twice, once on original instance, and again on the receiving instance)
Diffstat (limited to 'app/models/concerns/account_avatar.rb')
-rw-r--r-- | app/models/concerns/account_avatar.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/app/models/concerns/account_avatar.rb b/app/models/concerns/account_avatar.rb index 8a5c9a22c..53d0d876f 100644 --- a/app/models/concerns/account_avatar.rb +++ b/app/models/concerns/account_avatar.rb @@ -7,9 +7,15 @@ module AccountAvatar class_methods do def avatar_styles(file) - styles = { original: '120x120#' } - styles[:static] = { format: 'png', convert_options: '-coalesce' } if file.content_type == 'image/gif' + styles = {} + geometry = Paperclip::Geometry.from_file(file) + + styles[:original] = '120x120#' if geometry.width != geometry.height || geometry.width > 120 || geometry.height > 120 + styles[:static] = { format: 'png', convert_options: '-coalesce' } if file.content_type == 'image/gif' + styles + rescue Paperclip::Errors::NotIdentifiedByImageMagickError + {} end private :avatar_styles @@ -17,7 +23,7 @@ module AccountAvatar included do # Avatar upload - has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '-quality 80 -strip' } + has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '-strip' } validates_attachment_content_type :avatar, content_type: IMAGE_MIME_TYPES validates_attachment_size :avatar, less_than: 2.megabytes end |