2013-10-10 3 views
9

पीआईएल (1.1.7) के साथ बनाई गई जेपीईजी छवियों में बहुत खराब गुणवत्ता है। यहाँ एक उदाहरण है:पीआईएल द्वारा उत्पादित जेपीईजी छवियों की गुणवत्ता इतनी खराब क्यों है?

इनपुट: http://s23.postimg.org/8bks3x5p7/cover_1.jpg

आउटपुट: http://s23.postimg.org/68ey9zva3/cover_2.jpg

उत्पादन छवि निम्न कोड के साथ बनाया गया था:

from PIL import Image 
im = Image.open('/path/to/cover_1.jpg') 
im.save('/path/to/cover_2.jpg', format='JPEG', quality=100) 

लाल पाठ वास्तव में भयानक लग रहा है। जीआईएमपी या फ़ोटोशॉप के साथ छवि को सहेजना पीआईएल द्वारा बनाई गई खराब गुणवत्ता के करीब भी नहीं आता है। क्या कोई जानता है कि ऐसा क्यों होता है और इसे कैसे हल किया जा सकता है?

आपकी मदद के लिए धन्यवाद!

+1

आप एक जेपीईजी का एक जेपीईजी सहेज रहे हैं। आप दो बार जानकारी खो रहे हैं। क्या आप निश्चित हैं कि जीआईएमपी और फ़ोटोशॉप वास्तव में जेपीईजी को फिर से संसाधित कर रहे हैं और न केवल इसे सहेज रहे हैं (क्योंकि कार्यक्रम इसे एक जेपीईजी के रूप में पहचानते हैं और इसलिए, इसके लिए कुछ भी नहीं करते हैं)? – John

+0

आपके त्वरित उत्तर के लिए धन्यवाद। मुझे इस तथ्य से अवगत है कि मैं दो बार जानकारी खो रहा हूं। यह सिर्फ एक बहुत ही सरल उदाहरण है। उत्पादन में मैं छवि का आकार बदल रहा हूं :)। अगर मैं जीआईएमपी या फ़ोटोशॉप में छवि का आकार बदलता हूं तो परिणामस्वरूप छवि बहुत तेज दिखती है। दो व्यक्ति दो चित्रों में लगभग समान दिखते हैं लेकिन लाल पाठ वास्तव में अलग दिखता है। – Pascal

+0

मुझे संदेह नहीं है कि यह जीआईएमपी/फ़ोटोशॉप से ​​तेज दिखता है। लेकिन क्या यह इनपुट छवि से कोई * अलग * है? जीआईएमपी/फ़ोटोशॉप से ​​जेपीईजी के रूप में इसे सहेजने के बाद, क्या कुछ बदल गया है? अगर उत्तर नहीं है, तो पीआईएल सिर्फ "खराब" लग सकता है क्योंकि यह वास्तव में जेपीईजी संपीड़न लागू कर रहा है, जबकि दूसरा नहीं है। देखो मैं क्या प्राप्त कर रहा हूँ? – John

उत्तर

23

जेपीईजी गुणवत्ता के दो भाग हैं। पहला quality सेटिंग है जिसे आप पहले ही उच्चतम संभावित मान पर सेट कर चुके हैं।

जेपीईजी chroma subsampling का भी उपयोग करता है, यह मानते हुए कि रंगीन परिवर्तन परिवर्तन हल्के परिवर्तन से कम महत्वपूर्ण हैं और कुछ जानकारी सुरक्षित रूप से फेंक दी जा सकती है। दुर्भाग्यवश अनुप्रयोगों की मांग में यह हमेशा सत्य नहीं होता है, और आप इसे लाल किनारों पर आसानी से देख सकते हैं। पीआईएल इस पहलू को नियंत्रित करने के लिए एक दस्तावेजी सेटिंग का पर्दाफाश नहीं करता है।

संपादित पास्कल बेयेलर द्वारा:

मैं सिर्फ एक विकल्प है जो सबसैम्पलिंग को निष्क्रिय पाया। छवि को सहेजते समय आप subsampling = 0 सेट कर सकते हैं और छवि तेज दिखती है! आपके सहायता मार्क के लिए धन्यवाद!

im.save('/path/to/cover-2.jpg', format='JPEG', subsampling=0, quality=100) 
संबंधित मुद्दे