2010-06-15 9 views
15

कैसे इन फिल्टर PHP में imagepng() के उत्पादन प्रभावित करते हैं?PHP में, imagepng() फ़िल्टर पैरामीटर स्वीकार करता है। ये फ़िल्टर फ़ंक्शन के आउटपुट को कैसे प्रभावित करते हैं?

  • PNG_NO_FILTER
  • PNG_FILTER_NONE
  • PNG_FILTER_SUB
  • PNG_FILTER_UP
  • PNG_FILTER_AVG
  • PNG_FILTER_PAETH
  • PNG_ALL_FILTERS

The documentation बस कहते हैं, "उनमें से प्रत्येक के लिए imagepng() फ़ंक्शन" द्वारा उपयोग किया जाने वाला एक विशेष पीएनजी फ़िल्टर।

ऐसा लगता है कि PNG_NO_FILTER का उपयोग कर उत्पादन का फ़ाइल आकार कम हो जाएगा, लेकिन उस के अलावा अन्य, मैं इसे कैसे प्रभावित होता है के रूप में अनिश्चित हूं। किसी अंतर्दृष्टि की वास्तव में सराहना की जाएगी।

उत्तर

14

http://www.w3.org/TR/PNG-Filters.html पर पीएनजी विनिर्देशों के अनुसार इन फ़िल्टरों का उद्देश्य इष्टतम संपीड़न के लिए छवि डेटा तैयार करना है।

कोई भी फिल्टर के साथ, scanline असंशोधित प्रेषित है; यह डेटा से पहले एक फ़िल्टर प्रकार बाइट डालने के लिए केवल आवश्यक है।

उप फिल्टर प्रत्येक बाइट और पहले पिक्सेल की इसी बाइट की मूल्य के बीच अंतर स्थानांतरित करता है।

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

औसत फिल्टर एक पिक्सेल का मूल्य भविष्यवाणी करने के लिए दो पड़ोसी पिक्सल (बाएं और ऊपर ) की औसत उपयोग करता है।

Paeth को फ़िल्टर तीन पड़ोसी पिक्सल (बाएं, ऊपर, ऊपरी बाएं) का एक सरल रेखीय कार्य की गणना करता है, तो कारक के रूप में पड़ोसी पिक्सेल अभिकलन मूल्य के सबसे करीब चुनता है। यह तकनीक के कारण एलन डब्ल्यू पेथ [PAETH] है।*

+0

तो हमें किस का उपयोग करना चाहिए? – cronoklee

2

उन सभी विभिन्न एल्गोरिदम पीएनजी एनकोडर पिक्सेल मान निर्धारित करने के लिए उपयोग कर सकते हैं। पूरी तरह से नहीं जानते हैं, लेकिन यह पृष्ठ कुछ गहराई में जाना प्रतीत होता है: http://www.w3.org/TR/PNG-Filters.html

4

imagepng() आदमी पेज सवाल से जुड़ा हुआ से,

फिल्टर

PNG फ़ाइल आकार को कम करने की अनुमति देता है। यह एक बिटमैस्क फ़ील्ड है जो को PNG_FILTER_XXX स्थिरांक के किसी भी संयोजन पर सेट किया जा सकता है। PNG_NO_FILTER> या PNG_ALL_FILTERS का क्रमशः सभी फ़िल्टर अक्षम या सक्रिय करने के लिए भी उपयोग किया जा सकता है।

तो, libpng कोई नहीं, उप, और फिल्टर की कोशिश करते हैं, तो आप

PNG_FILTER_NONE|PNG_FILTER_SUB|PNG_FILTER_UP 

PNG_ALL_FILTERS प्रयोग करेंगे बस के लिए

PNG_FILTER_NONE|PNG_FILTER_SUB|PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH 

आशुलिपि है के रूप में जो फिल्टर का उपयोग करने के लिए , यह छवि पर निर्भर करता है। 256 या उससे कम रंग वाले चित्र आमतौर पर PNG_NO_FILTER के साथ बेहतर संपीड़ित होते हैं, जबकि कई रंगों (जैसे फ़ोटो) वाली छवियां आमतौर पर PNG_FILTER_SUB या PNG_ALL_FILTERS के साथ बेहतर संपीड़ित होती हैं। "Optipng" या मेरे "pngcrush" जैसे अनुप्रयोग फ़िल्टर चयन को अनुकूलित करने का प्रयास करते हैं। यदि आप अंतिम अनुकूलन के लिए उन तृतीय-पक्ष अनुप्रयोगों में से किसी एक का उपयोग करने जा रहे हैं, तो आपको गति के लिए, अपनी कार्यशील प्रतियों के लिए केवल PNG_NO_FILTERS का उपयोग करना चाहिए।

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