2016-06-20 10 views
0

Ich benutze Ruby on Rails und die paper-clip Gem und ich möchte ein .gif Bild in .jpeg konvertieren, wenn das .gif Bild kein animiertes gif ist.Wie kann ich ein .gif-Bild in .jpeg konvertieren, wenn das angegebene .gif-Bild kein animiertes GIF ist?

Dies ist mein Code:

has_attached_file :image, styles: Proc.new { |file| file.instance.check_image_gif? ? { 
     :'960' => ["960>x960", :gif], 
     :'640' => ["640>x640", :gif], 
     :'320' => ["320>x320", :gif] 
     }:{ 
     :'960' => ["960>x960", :jpg], 
     :'640' => ["640>x640", :jpg], 
     :'320' => ["320>x320", :jpg] 
     } 
    } 
    def check_image_gif? 
     # I want to check animation gif here. 
     image.instance.image_content_type =~ %r(gif) ? true : false 
    end 
+0

Vielleicht kann dies helfen: http://stackoverflow.com/questions/27238816/how-to-tell-if-gif-isanimated – IngoAlbers

+0

danke, aber ich kann nicht verstehen, Daten von Büroklammer zu rmagick zu senden. .. –

+0

Paperclip verwendet bereits ImageMagick, also könnten Sie vielleicht einfach versuchen: 'Magick :: ImageList.new (image.url) .scenes> 0' in Ihrem' check_image_gif? ' – IngoAlbers

Antwort

0

ich von mir gelöst.

def check_image_gif? 
    begin 
    file = image.instance.image.queued_for_write[:original] 
    img = Magick::Image.read(file.path) 
    animation = (img.size>1) 
    unless animation 
     image.instance.image_content_type = "image/jpeg" 
    end 
    rescue => e 
    end 
    image.instance.image_content_type =~ %r(gif) ? true : false 
end 

Ich habe hinzugefügt rmagick Gem.