What I'd like to do is upload an image, then take the user to a new
page where I will use Jcrop to let the user select the part of the
image they want to crop, and then store that image. Essentially, I
want to make it a 2-stage process.
I know how to do the javascript part, and I understand the basic flow
of how to create this functionality. However, I am not aware of the
carrierwave specifics on how to accomplish this.
The closest thing I can find is:
image.recreate_versions!
But I still can't pass in the height/width and starting x,y to crop
it.
For example, how can I tell carrierwave to do the cropping 'after the
fact' - i.e. not when the image is uploaded for the first time? I see
methods to "process" the image, but they happen automatically with
fixed Height and Width. How can I delay this?
redirect_to(profile_path, :notice => 'Your profile and avatar
was successfully updated.')
end
Here is the method to add to the User model that contains an "avatar"
image uploader:
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
Basically this just hi-jacks the current one, overwrites it, and then
tells Carrierwave to create the thumbnail again with the new cropped
version. Seems to work.