require 'ftools' require 'rubygems' require 'RMagick' include Magick class CropController < ApplicationController WorkFile='temp.jpg' def get_selected_pic session[:picfile] ||= "yes.jpeg" end def designers Co-Designer: Anmol Anand end def get_mainfile session[:mainfile] end def start_choices ['left','right','top','bottom'] end def get_choices session[:choices]= ['left','right','top','bottom'] end def get_selected_item session[:selected_item] end def get_motherpic session[:motherpic] end def get_pic session[:pic] end def get_crop_percentage session[:crop_percentage]=((get_selected_item )* ("#{get_stepsize}".to_i)) % 100 session[:crop_percentage] end def first_time session[:motherpic]=session[:pic]=get_selected_pic session[:selected_item]=0 session[:freeze]=nil session[:choices]=nil #session[:separator]=',' #session[:crop_percentage] ||= 10 #session[:stepsize].to_i #state 0 => we are choosing what to change #state 1 => we have chosen what to change session[:state]=0 session[:title]='select which side to cut' redirect_to :action => "index" end def crp(path,cropfile,width,height,gravity) # logger.info("path : #{path}") # logger.info("crop : #{cropfile}") # logger.info("width : #{width}") # logger.info("height : #{height}") # logger.info("gravity : #{gravity}") width=width.to_i height=height.to_i path = path.chomp cropfile = cropfile.chomp if File.exists?(cropfile) # logger.info("filepresent:#{cropfile}exists") else img=Magick::Image.read(path).first img=img.scale(560,400) img.crop(gravity,width,height).write(cropfile) end end def selected(str) session[:motherpic]= get_pic end def get_freeze session[:freeze] ||= get_selected_item #session[:selected_item] end def backspace session[:state]=0 session[:selected_item]=0 session[:title]='select which side to cut' session[:pic]=get_motherpic #session[:motherpic] session[:freeze]=nil redirect_to :action => "index" end def process_choice selected_choice if session[:state]==1 session[:state]=0 session[:selected_item]=0 session[:freeze]=nil session[:title]='select which side to cut' session[:motherpic]=get_pic #session[:pic] else session[:state]=1 session[:title]="crop#{get_crop_percentage}%"+get_choices[get_freeze % get_choices_size] # logger.info("freeze:#{session[:freeze]}") end #logger.info("sel_state:#{session[:state]}") #get_choices[get_freeze%session[:choices].size] #logger.info("freeze:#{session[:freeze]}") logger.info("sel_state:#{session[:state]}") # logger.info("croppercent:#{get_crop_percentage}") end def updownevent # logger.info("reached updownevent") if session[:state]==1 session[:crop_percentage]+=(get_stepsize).to_i tempchoice = get_choices choice=tempchoice[get_freeze % tempchoice.size] logger.info("choice:#{choice}") st = (Dir.pwd).chomp("/public")+"/public/images/" dir= Dir.pwd # logger.info("st : #{st}") session[:mainfile]= if session[:motherpic]=~/home/ session[:motherpic] else st+session[:motherpic] end picwidth = 560 ; #width of the pic (in pixels) picheight = 400; #height of the pic (pixels) #session[:crop_percentage]=(get_selected_item % 9 + 1)* 10 #session[:crop_percentage]=session[:crop_percentage]+session[:stepsize].to_i #percentcrop=session[:crop_percentage] percentcrop=get_crop_percentage percentcrop = (100-percentcrop.to_i) #percentcrop = 50 pwidth = ((picwidth)*percentcrop.to_i)/100 pheight=((picheight)*percentcrop.to_i)/100 # logger.info("percentcrop : #{percentcrop}") # logger.info("crop_percentage : #{session[:crop_percentage]}") # logger.info("pwidth : #{pwidth}") # logger.info("pheight : #{pheight}") case choice when "left" filename="#{get_mainfile}".gsub(/\./,"cl#{get_crop_percentage}"+".") # logger.info("mainfile:#{get_mainfile}") session[:pic]=filename session[:title]="crop#{get_crop_percentage}%"+get_choices[get_freeze % get_choices_size] crp("#{get_mainfile}",filename,pwidth,picheight,NorthEastGravity) when "right" filename="#{get_mainfile}".gsub(/\./,"cr#{get_crop_percentage}"+".") session[:pic]=filename session[:title]="crop#{get_crop_percentage}%"+get_choices[get_freeze % get_choices_size] crp("#{get_mainfile}",filename,pwidth,picheight,NorthWestGravity) #logger.info("mainfile1:#{get_selected_pic}") when "top" filename="#{get_mainfile}".gsub(/\./,"ct#{get_crop_percentage}"+".") session[:pic]=filename session[:title]="crop#{get_crop_percentage}%"+get_choices[get_freeze % get_choices_size] crp ("#{get_mainfile}",filename,picwidth,pheight,SouthEastGravity) when "bottom" filename="#{get_mainfile}".gsub(/\./,"cb#{get_crop_percentage}" +".") session[:pic]=filename session[:title]="crop#{get_crop_percentage}%" + get_choices[get_freeze % get_choices_size] crp("#{get_mainfile}",filename,picwidth,pheight,NorthWestGravity) end end end def extras logger.info("reached extras") if session[:state]==1 @selected_item = session[:freeze]%get_choices_size end if session[:pic].match("/images/(.*)$") @picfile=$1 else @picfile=get_pic end # logger.info("mypic: #{@picfile}") end end