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

4
我将使用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

通过使用+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中放置lambda不起作用,所以我猜那个行为是不同的。


你能再详细描述一下你是如何解决这个问题的吗?谢谢。 - pinglamb
哦,我也解决了我的问题,方法是在样式配置中删除缩略图选项,例如 { resized: '800x800>' } 变为 { resized: {} }。这样,裁剪命令总是首先执行。 - pinglamb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接