2012-02-17 14 views
6

आम तौर पर जब कोई छवि मेरी साइट पर आती है तो मैं इसे एक छवि लाइब्रेरी का उपयोग करके jpg के रूप में सहेजता हूं जिसे मैंने 80% की डिफ़ॉल्ट गुणवत्ता के साथ लिखा था। अब जब मुझे उस पर कुछ अन्य ऑपरेशन करने की ज़रूरत है (जैसे इसे फसल करना, या यहां तक ​​कि इसे आकार देने) तो छवि जेपीजी के रूप में खोली जाएगी, संसाधित की जाएगी, फिर वापस सहेजी जाएगी। हालांकि, अगर इसे फिर से संपीड़ित नहीं करना है, तो इसे संपीड़ित किया गया है या अन्यथा जब भी मुझे ऑपरेशन करने की आवश्यकता होती है तो गुणवत्ता गिर जाएगी।जेपीजी संपीड़न दर का पता लगाएं?

क्या कोई तरीका है कि मैं यह पता लगा सकता हूं कि मानक जीडी PHP पुस्तकालयों में उपकरण का उपयोग करके छवि को पहले से ही संकुचित कर दिया गया है (इसके अनुमान के पीएनजी संस्करण की तुलना में)? मुझे पता है कि उपकरण जहां एक छवि को फ़ोटोशॉप किया गया है, संपीड़न की सापेक्ष मात्रा की तुलना करके ऐसा करता है, इसलिए मुझे लगता है कि संपीड़न की मात्रा का पता लगाना संभव है लेकिन क्या कोई जानता है कि मैं इस गणना को करने के बारे में कैसे जाऊं? धन्यवाद।

+0

जो मुझे पता है, आपको jpg फ़ाइल –

+1

से गुणवत्ता दर नहीं मिल सकती है, मुझे पता है कि यह फ़ाइल के मेटा डेटा में ही सहेजा नहीं गया है, लेकिन शायद इसे गणना करने का कोई तरीका है – hackartist

+0

नहीं। आप नहीं कर सकते .. –

उत्तर

8

आप जेपीजी से गुणवत्ता मूल्य नहीं प्राप्त कर सकते हैं। इसके अलावा, गुणवत्ता मूल्य एन्कोडर निर्भर है। यह मानक या ऐसा कुछ नहीं है। कुछ कार्यक्रमों में केवल कुछ (कम, मध्यम, उच्च) होता है, कुछ 20 में 90 से बेहतर हो सकते हैं।

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

अंगूठे का नियम: प्रत्येक गुणवत्ता समान मूल्य पर प्रत्येक बार एन्कोड करें। उदाहरण: यदि आप इसे 60 बार कहते हैं तो इसे सहेजते हैं, तो अगली बार 80 पर सहेजने पर कोई लाभ नहीं होता है। बस बड़ा फ़ाइल आकार।

इसके अलावा, यदि आपके पास पर्याप्त संग्रहण उपलब्ध है, तो इस तरह के पुनः-एन्कोडिंग की संख्या को कम करने और मूल पर प्रत्येक मैनिपुलेशन करने का प्रयास करें।

+0

अद्यतन उत्तर। –

1

आपको छवि की गुणवत्ता को डेटाबेस में संग्रहीत करना होगा ताकि आप जान सकें कि यह पहले ही संपीड़ित हो चुका है या नहीं।

+0

तब भी यदि वह छवि का आकार बदलता है, तो गुणवत्ता गिर जाएगी। सहेजा जा रहा है कि अर्थहीन है। लेकिन, अच्छा विचार है, इसलिए एक +1 है। –

+0

@RokKralj मैं बचत का सुझाव देता हूं ताकि वह इसे एक से अधिक बार संपीड़ित न करे। वह छवि को और भी खराब कर सकता है .. – ppp

+0

आप सब कुछ नहीं समझते हैं। कोई "संपीड़न" नहीं है, यह केवल गुणवत्ता मूल्य पर बचा है। यदि आपका मतलब है कि वह 80 पर एक बार बचाता है, तो उसे याद रखें, तो वह अगली बार 100 पर इसे बचा सकता है ...? इससे केवल गुणवत्ता के आकार में फ़ाइल आकार में वृद्धि होगी। 80 -> 80 -> 80 सही बचत है। –

1

छवि को कई बार संपीड़ित करने से बचने के लिए आप मूल के साथ आकार बदलने के फ़ाइल आकार की तुलना कर सकते हैं।

  • यदि फ़ाइल का आकार काफी बड़ा है तो आपने दर में वृद्धि की है, इसलिए इसका उपयोग न करें।
  • यदि यह संकुचित होने से काफी कम है, तो इसका उपयोग करें।
इसके अलावा

, के रूप में एक ही दर के साथ एक फ़ाइल recompressing केवल फ़ाइल आकार से दूर एक छोटी राशि shaves, यदि आप अपने दर (60%, 70%, 80% आदि) आप का पता लगाने के लिए कर सकता है दौर नंबरों का उपयोग दर अगर आकार का फ़ाइल आकार मूल के समान ही है।

उदाहरण के लिए

, पर एक 1,844 KB फ़ाइल संपीड़ित:
- 90% = 2,115 KB। आकार बढ़ गया, इसलिए मैं इसका उपयोग नहीं करूंगा।
- 80% = 1,843 KB। यह मूल के फ़ाइल आकार के लगभग समान है, इसलिए मैं मान सकता हूं कि मूल में 80% दर है।
- 70% = 1,567 KB। यह संपीड़ित है, इसलिए मैं इसका उपयोग करूंगा।

अंत में, यदि आप केवल उन छवियों की दरों से चिंतित हैं जिन्हें आपने स्वयं संकुचित किया है, तो आप फ़ाइल के मेटाडेटा में उपयोग की जाने वाली दर को बचाने के लिए PHP का उपयोग कर सकते हैं।

संबंधित मुद्दे