williamdeluca-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2008-Mar-20 00:12 UTC
Having trouble with a remote-crop-then-resize using attachment fu =(
Basically, I''m trying to crop multiple images out of a remote/original scene.. Think flickr ''tagging'', only, the pixs in the tagged boxes become their own unique images.. by way of simulating an upload from the controller using attachment fu.. can''t quite figure out the specific method in fu that would allow me to do this.. I''m so near the edge right now!@ UGH =( CONTROLLER: SCENE.RB # POST /yings # POST /yings.xml def create @ying = Ying.new(params[:ying]) scene = Scene.find(params[:ying][:scene_id]) scene.yings << @ying @ying.scale_to_scene(params[:ying], scene) avatar = Avatar.create!(:uploaded_data => params[:ying] [:uploaded_data], :content_type => ''image/png'', :filename=> "#{RAILS_ROOT}/public/images/avatars/yings/ #{@ying.id}_thing.png", :ying_id => self.id, :size => (@ying.width).to_i * (@ying.height).to_i ) avatar.ying_id = @ying.id avatar.scene_id = nil avatar.user_id = nil @ying.avatar = avatar avatar.thumbnails.clear # avatar.save! respond_to do |format| if @ying.save_with_avatar(avatar) flash[:notice] = ''Ying was successfully created.'' format.html { render :action => "show" } format.xml { render :xml => @ying, :status => :created, :location => @ying } else format.html { render :action => "new" } format.xml { render :xml => @ying.errors, :status => :unprocessable_entity } end end end YING.rb def scale_to_scene(params, scene) x1 = params[:x1].to_f*scene.wscale.to_f y1 = params[:y1].to_i*scene.hscale.to_f width = params[:width].to_f*scene.wscale.to_f height = params[:height].to_f*scene.hscale.to_f img = Magick::Image.read("#{RAILS_ROOT}/ public#{scene.avatar.public_filename}")[0] chopped = img.crop(Magick::ForgetGravity, x1, y1, width, height) path = "#{RAILS_ROOT}/public/images/avatars/yings/ #{self.id}_thing.png" chopped = chopped.write(path) #create_or_update_thumbnail(path, suffix, *size) end avatar_system.rb attr_accessor :uploaded_avatar_data def save_with_avatar(params) avatar = Avatar.new begin self.transaction do if params[:uploaded_avatar_data] && params[:uploaded_avatar_data].size > 0 avatar.uploaded_data = (params[:uploaded_avatar_data]) avatar.thumbnails.clear avatar.save! self.avatar = avatar end save! end rescue if avatar.errors.on(:size) errors.add_to_base("Uploaded image is too big (500-KB max).") end if avatar.errors.on(:content_type) errors.add_to_base("Uploaded image content-type is not valid.") end false end end --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---