在Imagemagick中调整大小之前使用chop

时间:2015-06-20 08:09:50

标签: ruby-on-rails-4 imagemagick paperclip

我正在使用paperclip gem来处理图像。

在某些图片中,我需要剪切源图像的前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以便在调整大小之前执行此操作?

1 个答案:

答案 0 :(得分: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"},

它可以重构,但c'est la vie

出于某种原因,将lambda放在all中不起作用,所以我猜这种行为是不同的。