> On Mar 15, 2016, at 4:28 AM, Nilesh <navale.nil...@gmail.com> wrote: > > Currently I am working on a ROR code which uses rails paperclip gem. > > > > My requirement is, to process images as per its file extension.
Here's how I solved this for a document management system that needed transcoding for video, resizing for images, and nothing for every other file type (zip, powerpoint, etc.). has_attached_file :blob, :preserve_files => true, :styles => Proc.new { |a| a.instance.file_styles(a.instance) }, :processors => Proc.new { |a| a.processors(a) } def file_styles(a) if a.video? return { :thumb => { :geometry => "320x320>", :format => 'jpg', :time => 1 }, :poster => { :geometry => "1280x720>", :format => 'jpg', :time => 1 }, :mp4 => { :geometry => "1280x720>", :format => :mp4, :streaming => true } } end if a.photo? return { :thumb => ["320x320>", :png], :large => ["1500x1500>", :png] } end if a.audio? return { :wav => ['audio', :wav], :mp3 => ['audio', :mp3] } end {} # if you get here, then there are no styles needed, just the original end def processors(a) if a.video? return [:ffmpeg, :qtfaststart] end if a.photo? return [ :my_thumbnail ] end if a.audio? return [ :audio ] end [] # if you get here, then no processing needed end Hope this helps, Walter > > > Case 1: If image type is “svg”, then do not process original image(as > ImageMagick breaks on resizing svg images). Upload original image, along with > large, medium, grayscale, grayscale_small versions. However all files will be > similar to original file, with different file names. Now I am able to upload > only original.svg file. However other versions are not created correctly, and > I did not find any solution so far. > > > > Case 2: If it is not a “svg” image, then process image as per given style. > This is working as expected. > > > > Current code looks like: > > has_mongoid_attached_file( :image, { > :styles => lambda { |img_url| img_url.instance.image_content_type != > "image/svg+xml" ? { > > > :large => "x248", > > > :medium => "x64", > > > :grayscale => { :processors => [:grayscale], :size => "82x82" }, > > > :grayscale_small => { :processors => [:grayscale], :size => "48x48" } > > > } : > > > { > > > :large => {write-a-code-to-upload-file-same-as-original-file-with-name-large}, > > > :medium => > {write-a-code-to-upload-file-same-as-original-file-with-name-medium} > > > :grayscale => > {write-a-code-to-upload-file-same-as-original-file-with-name-grayscale} > > > :grayscale_small => > {write-a-code-to-upload-file-same-as-original-file-with-name-grayscal_small} > > > } > } > } > > Gem versions: > > mongoid: 3.0.15 > paperclip: 2.3.11 > mongoid-paperclip: 0.0.8 > > Please let me know if you have worked on similar requirement. Any pointers > will be highly appreciated. > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-talk+unsubscr...@googlegroups.com. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/97af62aa-072f-4e0a-a984-992bf3a35fc6%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/961E5979-0B53-40F3-B6ED-3DE833380D6A%40wdstudio.com. For more options, visit https://groups.google.com/d/optout.