Carrierwave/Minimagick - 裁剪总是不准确的,除非 'y' 参数为 0
Posted
技术标签:
【中文标题】Carrierwave/Minimagick - 裁剪总是不准确的,除非 \'y\' 参数为 0【英文标题】:Carrierwave/Minimagick - Cropping is always inaccurate, except when 'y' parameter is 0Carrierwave/Minimagick - 裁剪总是不准确的,除非 'y' 参数为 0 【发布时间】:2013-07-20 10:16:04 【问题描述】:实现了Railscasts episode 182 (revised) 中所示的裁剪功能后,我似乎无法准确地进行裁剪工作。裁剪的始终是裁剪中所选区域的前 20%。除了 'y' 参数为 0 时,即裁剪区域接触图像顶部时。然后裁剪工作正常。
我的实现与截屏视频中显示的相同,只是我从控制器调用crop_avatar
方法,如下所示:
@profile.crop_x = params[:profile][:crop_x]
@profile.crop_y = params[:profile][:crop_y]
@profile.crop_h = params[:profile][:crop_y]
@profile.crop_w = params[:profile][:crop_w]
@profile.crop_avatar
@profile.save!
avatar_uploader
中的crop
方法也是这样实现的:
def crop
if model.crop_x.present?
resize_to_limit(500, 500)
manipulate! do |img|
x = model.crop_x
y = model.crop_y
w = model.crop_w
h = model.crop_h
img.crop "#wx#h+#x+#y"
img
end
end
end
我正在使用 Rails 3.2.1、Carrierwave 0.7.1、JCrop 0.9.12。
【问题讨论】:
我知道这是一篇旧帖子,但为避免将来出现任何混淆,请查看您的参数。你设置了两次:crop_y
。
【参考方案1】:
我遇到了类似的问题,我发现在操作中调整图像大小!调用而不是使用“resize_to_limit”载波辅助方法为我解决了这个问题。
def crop
if model.crop_x.present?
manipulate! do |img|
x = model.crop_x
y = model.crop_y
w = model.crop_w
h = model.crop_h
img.resize "500x500"
img.crop "#wx#h+#x+#y"
img
end
end
end
我还强烈建议您阅读this answer,以了解有关此代码中实际情况的更多详细信息。
【讨论】:
我的问题也一样。我正在使用 rmagick。上面的解决方案对我不起作用。以上是关于Carrierwave/Minimagick - 裁剪总是不准确的,除非 'y' 参数为 0的主要内容,如果未能解决你的问题,请参考以下文章