2009-09-06 13 views
8

मैं सभी 4 जनहित याचिकाजनहित याचिका: छवि का आकार बदलने: एल्गोरिथ्म फ़ायरफ़ॉक्स के

>>> data = utils.fetch("http://wavestock.com/images/beta-icon.gif") 
>>> image = Image.open(StringIO.StringIO(data)); image.save("/home/ptarjan/www/tmp/metaward/original.png") 
>>> 
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.ANTIALIAS).save("/home/ptarjan/www/tmp/metaward/antialias.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.BILINEAR).save("/home/ptarjan/www/tmp/metaward/bilinear.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.BICUBIC).save("/home/ptarjan/www/tmp/metaward/bicubic.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.resize((36,36), Image.NEAREST).save("/home/ptarjan/www/tmp/metaward/nearest.png") 
>>> 
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.ANTIALIAS); image.save("/home/ptarjan/www/tmp/metaward/antialias-thumb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.BILINEAR); image.save("/home/ptarjan/www/tmp/metaward/bilinear-thumb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.BICUBIC); image.save("/home/ptarjan/www/tmp/metaward/bicubic-thumb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.thumbnail((36,36), Image.NEAREST); image.save("/home/ptarjan/www/tmp/metaward/nearest-thumb.png") 
>>> 
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.ANTIALIAS).save("/home/ptarjan/www/tmp/metaward/antialias-rgb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.BILINEAR).save("/home/ptarjan/www/tmp/metaward/bilinear-rgb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.BICUBIC).save("/home/ptarjan/www/tmp/metaward/bicubic-rgb.png") 
>>> image = Image.open(StringIO.StringIO(data)); image.convert("RGB").resize((36,36), Image.NEAREST).save("/home/ptarjan/www/tmp/metaward/nearest-rgb.png") 

की एल्गोरिदम से आकार बदलने के लिए देख एक ही बुरा के बारे में हो रही है लेकिन परिणाम बहुत खराब लग रही है कि सिर्फ फ़ायरफ़ॉक्स में आकार बदलने के समान है।

http://paulisageek.com/tmp/metaward/images.html

मैं कैसे जनहित याचिका (या किसी अन्य अजगर छवि पुस्तकालय) का उपयोग कर फ़ायरफ़ॉक्स परिणाम के लिए एक समान प्रभाव प्राप्त कर सकते हैं?

संपादित: माउस ले जाकर देखने के लिए प्रत्येक छवि है

http://paulisageek.com/tmp/metaward/original.png http://paulisageek.com/tmp/metaward/antialias.png http://paulisageek.com/tmp/metaward/bicubic.png http://paulisageek.com/tmp/metaward/bilinear.png http://paulisageek.com/tmp/metaward/nearest.png http://paulisageek.com/tmp/metaward/antialias-thumb.png http://paulisageek.com/tmp/metaward/bicubic-thumb.png http://paulisageek.com/tmp/metaward/bilinear-thumb.png http://paulisageek.com/tmp/metaward/nearest-thumb.png http://paulisageek.com/tmp/metaward/antialias-rgb.png http://paulisageek.com/tmp/metaward/bicubic-rgb.png http://paulisageek.com/tmp/metaward/bilinear-rgb.png http://paulisageek.com/tmp/metaward/nearest-rgb.png

ऐसा लगता है कि आरजीबी और फिर एंटीअलीस सबसे अच्छा दिखता है। कोई अन्य सिफारिशें?

संदर्भ के लिए, यह एक है कि सबसे अच्छा देखा है:

>>> image = Image.open(StringIO.StringIO(data)); 
>>> image.convert("RGB").resize((36,36), Image.ANTIALIAS) 
+0

आप पीआईएल का किस संस्करण का उपयोग कर रहे हैं? –

+0

पीआईएल संस्करण: /usr/lib/python2.5/site-packages/PIL/PIL-1.1.6.egg-info –

+0

गिंप पीआईएल जैसे ही परिणाम उत्पन्न करता है। –

उत्तर

8

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

import Image 
im=Image.open("beta-icon.gif") 
im = im.convert("RGB") 
im=im.resize((36,36), Image.ANTIALIAS) 
im.save("q5.png") 

परिणाम फ़ायरफ़ॉक्स की तरह लगभग उतना ही अच्छा है।

+0

क्या यह अच्छा थंबनेल प्राप्त करने के लिए एक सामान्य उद्देश्य रणनीति होगी? यदि आप मेरे कॉर्पस का एक उदाहरण चाहते हैं, तो मेरे पास लगभग 10k छवियां हैं: http://metaward.com/awards –

+2

निश्चित रूप से। अनुक्रमित रंगों वाली छवियों का आकार बदलना आमतौर पर अच्छे नतीजे नहीं प्रदान करता है। यदि आपको पैलेट को संरक्षित करने की परवाह नहीं है, तो आपको हमेशा आरजीबी में जाना चाहिए, फिर आकार बदलें और (मामले में) रंग गहराई को फिर से कम करें। –

+0

धन्यवाद रॉबर्टो। पीआईएल डिफ़ॉल्ट रूप से ऐसा क्यों नहीं करेगा यदि यह एक ज्ञात विधि है? –

0

thumbnail() के बजाय resize() विधि का उपयोग कर प्रयास करें। मेरे अनुभव में, वे बहुत अलग व्यवहार करते हैं।

इसके अलावा, आपका कोड एक .gif पढ़ रहा है, लेकिन आपका मूल .png है। सुनिश्चित करें कि आप इसे कम करने से पहले वास्तव में सभी मूल डेटा हैं।

+0

क्षमा करें, मैंने उस रेखा को काट दिया जहां मैंने मूल बनाया था। लेकिन हाँ, यह सिर्फ एक रूपांतरण था। मैं आकार बदलने का प्रयास करूंगा, और तुलना करूंगा। –

+0

उदाहरण पृष्ठ अब सभी आकार बदलता है(), और वे अभी भी एफएफ तरीके से भी बदतर दिखते हैं। कोई अन्य सुझाव? –

1

ऐसा लगता है कि आरजीबी और फिर एंटीअलीस सबसे अच्छा दिखता है। कोई अन्य सिफारिशें?

नहीं, यह वास्तव में अपेक्षित परिणाम है। मूल सीमित पैलेट मोड में किए गए किसी भी आकार में पैलेट में रंगों के बीच उपलब्ध होने की कमी के कारण जाली कचरा पैदा करने की संभावना है; और एंटीअलाइज़ केवल डाउनस्कलिंग के लिए उपयोग किए जाने वाले फ़िल्टर का आकार बदलना है: BILINEAR और BICUBIC वास्तव में केवल दो पिक्सेल प्रति धुरी लेते हैं और उनके बीच मिश्रण करते हैं, जो upscaling के लिए ठीक है, लेकिन जब कोई या दोनों काम नहीं करता है axes downscaled हैं।

दुर्भाग्य से थंबनेल() ने वास्तव में सही तरीके से काम नहीं किया है, इसलिए आपको इसे स्वयं करना है।

+0

तो मुझे लगता है कि थंबनेल हटा दिया जाएगा और हटा दिया जाएगा। थंबनेल (आकार) जो आवश्यक होने पर पैलेट को परिवर्तित करता है, और फिर आकार का उपयोग करता है। पीआईएल के लिए एक नए कमांडर के रूप में, थंबनेल बिल्कुल वैसा ही लग रहा था जो मुझे चाहिए था। –

+0

वास्तव में, यह पीआईएल के डोडी कोनों में से एक है जिसे बेहतर किया जा सकता है, लेकिन नए उपयोगकर्ता के लिए एक आकर्षक दिखने वाला जाल भी हो सकता है। – bobince

+0

असल में, आरजीबी के साथ ऐसा करने से मैंने अल्फा चैनल खो दिया। इसे रखने का कोई तरीका? –

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