2011-07-02 12 views
6

मैंने रेल में पेपरक्लिप स्थापित किया है और सब कुछ हंकी-डोरी काम कर रहा है (मुझे वास्तव में उस पर Google ... था।पेज स्पीड की तुलना में रेल पेपरक्लिप छवि संपीड़न

मैंने देखा है कि पेज स्पीड मुझे बताती है कि मैं अपने थंबनेल और बड़ी छवियों (जिसे पेपरक्लिप उत्पन्न करता है) को लापरवाही से संपीड़ित कर सकता हूं। क्या कोई विकल्प है जो मैं अपने मॉडल में डाल सकता हूं जो यह करता है? मैंने देखा है कि mod_deflate छवियों को संकुचित नहीं करता है (मैं फ़ायरफ़ॉक्स का उपयोग कर रहा हूं)।

उत्तर

10

आप paperclip-compression gem का उपयोग कर पेपरक्लिप प्रसंस्करण में संपीड़न जोड़ सकते हैं।

अपने Gemfile में:

gem "paperclip-compression", "~> 0.1.1" 

(निश्चित रूप से चलाने के बंडल स्थापित)

अपने मॉडल में:

has_attached_file :avatar, 
       :styles  => { :medium => "300x300>", :thumb => "100x100>" }, 
       :processors => [:thumbnail, :compression] 

"jpegtran संकुचित डेटा उलटफेर से काम करता है (डीसीटी गुणांकों), छवि को पूरी तरह से डीकोड किए बिना। इसलिए, its transformations are lossless "

नोट: यदि आप उसकेोकू पर चल रहे हैं, तो आपको jpegtran की आवश्यकता होगी, और आपके आवेदन में जोड़े गए द्विआधारी ऑप्टिपिंग की आवश्यकता होगी। running binaries on heroku पर एक अच्छा लेख यहां दिया गया है।

+0

क्या यह रेल 2.3 के साथ काम करेगा? आवेदन शुरू करने में विफल रहा है। – JakeTheSnake

+0

सुनिश्चित नहीं है कि यह 2.3 में काम करेगा। मैं इसे 3.2 में उपयोग कर रहा हूँ। पेपरक्लिप-संपीड़न निर्भरताओं की जांच करें। – vansan

1

आपको विभिन्न जेपीईजी संपीड़न स्तरों पर अपना स्वयं का परीक्षण करना चाहिए, लेकिन मैंने देखा है कि मैं छवि मैगिक्स गुणवत्ता सेटिंग को 75 तक नीचे टक्कर दे सकता हूं और अभी भी 30-40% फ़ाइल आकार बचत के साथ कोई ध्यान देने योग्य अंतर नहीं देख सकता।

मेरे मॉडल लगता है:

has_attached_file :photo, 
    :styles => { 
     :"185x138" => { 
     :geometry => "185x138>" 
     } }, 
    :convert_options => { 
     :all => "-auto-orient", 
     :"185x138" => "-quality 75", 

-quality 75 ImageMagick के लिए है। यदि आप एक अलग प्रोसेसर का उपयोग कर रहे हैं तो आपको तदनुसार समायोजित करने की आवश्यकता होगी।

+0

मैं अभी भी दिखाई दे रहा है कि पृष्ठ गति के अनुसार "मैं losslessly छवि को संपीड़ित करके आकार में एक 22% की कमी हो सकता है" । – JakeTheSnake

0

एफएफएमईजीई या एवीसीओएनवी के बारे में क्या?

sudo apt-get install ffmpeg/avconv 

= प्रारंभकर्ता

Paperclip.options[:command_path] = "/usr/bin/" # see `which ffmpeg` 

= मोडल

after_save :compress_with_ffmpeg 

def compress_with_ffmpeg 
    [:thumb, :original, :medium].each do |type| 
    img_path = self.avtar.path(type) 
    Paperclip.run("ffmpeg", " -i #{img_path} #{img_path}") 
    end 
end 
संबंधित मुद्दे