我想要做的是上传一个图像,然后带用户到一个新的页面,在那里我将使用Jcrop让用户选择他们想要裁剪的图像的一部分,然后存储该图像。本质上,我想让它成为一个两阶段的过程。
我知道如何完成javascript部分,并且了解如何创建此功能的基本流程。但是,我不知道如何实现这个的载波细节。
我能找到的最接近的东西是:
image.recreate_versions!
但我仍然不能通过高度/宽度和开始x,y来裁剪它。
例如,我如何告诉载波进行剪切‘后事实’-即不是当图像是第一次上传?我看到了处理图像的方法,但是它们会在固定的高度和宽度下自动发生。我怎么能推迟这件事?
本质上,我想要做的是动态定义一个版本,其中我可以指定高度和宽度以及x,y
谢谢
发布于 2011-05-22 15:03:41
这是我能做的最好的了。也许有一个更简单的方法,但这是我的方法:
下面是传递裁剪信息时的“POST”控制器操作:
def update_crop
@user = User.find(current_user.id)
@user.crop(params[:x].to_i, params[:y].to_i, params[:h].to_i, params[:w].to_i)
redirect_to(profile_path, :notice => 'Your profile and avatar was successfully updated.')
end
下面是向包含“化身”图像上传器的用户模型添加的方法:
def crop(x, y, h, w)
image = Magick::ImageList.new(avatar.current_path)
cropped_image = image.crop(x, y, h, w)
cropped_image.write(avatar.current_path)
avatar.recreate_versions!
end
基本上,这只是对当前的一个进行修改,覆盖它,然后告诉载波创建。
https://stackoverflow.com/questions/6086814
复制