egervari
2011-May-22 08:52 UTC
How do you crop an image with carrierwave ''after the fact'' in rails?
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?
Thanks
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
egervari
2011-May-22 10:08 UTC
Re: How do you crop an image with carrierwave ''after the fact'' in rails?
This is the best I can do. There''s probably an easier way to do it,
but this is my hack:
Here is my ''POST'' controller action when the cropping info is
passed:
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
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.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Maybe Matching Threads
- Rails 2.3.11 and carrierwave, can't find generator
- Carrierwave Direct and additional form elements
- Store files with carrierwave to remote server (may be via ssh/scp)?
- rails_admin & carrierwave
- Performance problem generating URL for thousands of images, due to hitting HDD for each one