2015-06-20 3 views
4

Я использую paperclip gem для обработки изображений.Используйте обрезку перед изменением размера в Imagemagick

В некоторых изображениях, мне нужно нарезать верхние 35 пикселей исходного изображения, а затем делать преобразования и обработки

В настоящее время я использую

:convert_options => { 
           all: lambda{ |instance| "#{!instance.chop_top.blank? ? '-chop 0x35' : '' } -limit memory 64 -limit map 128"}, 
           mobile_sm: "-resize 620 -quality 90 -strip -interlace Plane", 
           mobile_lg: "-resize 1280 -quality 80 -strip -interlace Plane", 
           feature: "-quality 90 -strip -interlace Plane", 
           medium: "-quality 85 -strip -interlace Plane", 
           preview: "-quality 85 -strip -interlace Plane", 
           tiny: "-quality 90 -strip -interlace Plane"} 

Это работает, в основном, но на mobile_lg кажется, что измельчение происходит после изменения размера (и я думаю, что это происходит и на других, его просто не видно)

Как я могу использовать -chop, чтобы он сделал это до изменения размера?

ответ

0

решить ее с +repage и не :all

так в основном это выглядит как

all: "-limit memory 64 -limit map 128", 
    mobile_sm: lambda{ |instance| "#{!instance.chop_top.blank? ? '-chop 0x31 +repage' : '' } -resize 640 -quality 90 -strip -interlace Plane"}, 
    mobile_lg: lambda{ |instance| "#{!instance.chop_top.blank? ? '-chop 0x31 +repage' : '' } -resize 1280 -quality 80 -strip -interlace Plane"}, 

он может быть переработан, но се ля ви

по какой-то причине, поставив лямбда в all не работает, поэтому я предполагаю, что поведение для этого отличается.

+0

Можете ли вы описать немного больше о том, как вы решаете проблему? Благодарю. – pinglamb

+0

ohhh, я также решил свою проблему, удалив параметр эскиза в конфигурации стилей, например. {resized: '800x800>'} до {resized: {}}. При этом команда урожая всегда идет первым. – pinglamb

+0

Я отредактировал ответ. –

Смежные вопросы