我有一个avatar_uploader.rb,它使用carrierwave创建上传的阿凡达(Avatar(的多个版本,也有一个裁切方法。
version :thumb do
process :crop
resize_to_fill(100, 100)
end
version :miniature do
resize_to_fill(25, 25)
end
version :large do
resize_to_limit(600, 600)
end
def crop
if model.crop_x.present?
resize_to_limit(600, 600)
manipulate! do |img|
x = model.crop_x.to_i
y = model.crop_y.to_i
w = model.crop_w.to_i
h = model.crop_h.to_i
img.crop!(x, y, w, h)
end
end
end
问题是在应用作物方法后需要两个版本。我想要一个微型版本,它只是拇指的较小版本,这是原始文件的裁剪版本。
裁剪方法要求用户裁剪图像,并且需要通过视图来调用x,y,w,h属性。因此,只能完成一次。对于用户来说,两个版本两次裁剪图像是没有意义的。
现在,如果我可以定义缩影以在拇指版本上应用resize_to_fill的版本很方便,但是我不知道该语法是什么。
我想写这篇文章: -
version :miniature do
thumb.resize_to_fill(25, 25)
end
但这只是出现错误,并说拇指不确定。
有没有办法实现这一目标?
更新: -
我认为我没有清楚地解释这个问题。
微型版本被重新生成,但问题是裁剪不会改变原始文件。它只是创建拇指版本。当应用微型版本时,它将小型制作原始文件,而不是拇指版本。我想要与拇指版本相同的作物,但在微型尺寸中。因此,理想情况下,我想在拇指版本上应用微型版本。我不知道该如何实现这一目标。希望现在更清楚。
您需要在裁剪后的图像上调用recreate_versions!
。因此您可以做:
model.image.recreate_versions!(:miniature)
更新:
您似乎在:thumb
上有农作物,但是对于您想要的东西,我建议定制原始作物,然后重新创建版本。瑞安·贝茨(Ryan Bates(的这款铁路广播很好地解释了。
希望这会有所帮助!