我目前正在尝试编写一个自定义的图像剪裁系统,类似于互联网上的其他系统,用户可以选择剪裁区域,然后相应地剪裁他们的图像。该应用程序使用Rails和将文件存储在Amazon S3中的Paperclip。然而,我在从S3获取文件并使用RMagick适当地裁剪文件方面遇到了很多麻烦。以下是当前的代码(它不起作用):
if params[:width].to_i > 0 and params[:height].to_i > 0 then
photo = Photo.find(params[:id])
image_data = Net::HTTP.get_response(URI.parse(photo.photo.url(:big))).body
orig_img = Magick::ImageList.new
orig_img.from_blob(image_data)
args = [params[:x1].to_i, params[:y1].to_i, params[:width].to_i, params[:height].to_i]
orig_img.crop!(*args)
photo.update_attributes({:photo => orig_img.to_blob})
photo.photo.reprocess!
photo.save
end
主要问题是裁剪后的图像没有通过paperclip上传回S3,因此不能正确地裁剪。之前有人尝试过使用paperclip实现这样的功能吗?这可能甚至不可能,但任何帮助都将不胜感激。