आप एक पारदर्शी छवि को स्केल करना चाहते हैं, लेकिन अभी तक पृष्ठभूमि का रंग (रों) नहीं जानते कि तुम समग्र इसे बाद में पर होगा कहो। दुर्भाग्य से पीआईएल पूरी तरह से पारदर्शी पिक्सल के रंग मूल्यों को शामिल करता है जो खराब परिणामों की ओर अग्रसर होते हैं। क्या पूरी तरह से पारदर्शी पिक्सेल को अनदेखा करने के लिए पीआईएल-आकार बदलने का कोई तरीका है?पारदर्शिता और रंग को संरक्षित करने वाले पीआईएल के साथ स्केल छवियां?
import PIL.Image
filename = "trans.png" # http://qrc-designer.com/stuff/trans.png
size = (25,25)
im = PIL.Image.open(filename)
print im.mode # RGBA
im = im.resize(size, PIL.Image.LINEAR) # the same with CUBIC, ANTIALIAS, transform
# im.show() # does not use alpha
im.save("resizelinear_"+filename)
# PIL scaled image has dark border
उत्पादन छवि काला प्रभामंडल (मध्य) के साथ
मूल छवि
उचित उत्पादन जिम्प (दाएं) के साथ बढ़ाया
संपादित करें: ऐसा लगता है कि मैं जो खोज रहा हूं उसे हासिल करना मुझे आकार बदलने के फ़ंक्शन के नमूने को संशोधित करना होगा जैसे कि यह पूर्ण पारदर्शिता वाले पिक्सेल को अनदेखा कर देगा।
EDIT2: मैं एक बहुत ही बदसूरत समाधान मिल गया है। यह आकार बदलने के दौरान पूरी तरह से पारदर्शी पिक्सेल रंगों के प्रभाव को कम करने के लिए आसपास के गैर पूरी तरह से पारदर्शी पिक्सल के औसत तक पूरी तरह से पारदर्शी पिक्सल के रंग मान सेट करता है। यह सरल रूप में धीमा है लेकिन अगर कोई अन्य समाधान नहीं है तो मैं इसे पोस्ट करूंगा। केवल आवश्यक पिक्सल को संसाधित करने के लिए एक पतला ऑपरेशन का उपयोग कर इसे तेजी से बनाना संभव हो सकता है।
edit3: premultiplied अल्फा जाने का रास्ता है - मार्क के जवाब
क्या मोड अपनी फ़ाइल जब छवि में लोड किया जाता? शायद अल्फा चैनल गिरा दिया गया है? – Ber
यह कहता है कि आरजीबीए और स्केल की गई छवि भी सीमा के अलावा जिंप में ठीक दिखती है। – Gonzo
क्या आपने सफेद पृष्ठभूमि की तरह किसी और चीज़ पर स्केल की गई छवि को मिश्रित करने का प्रयास किया था? क्या स्केलिंग ठीक है तो अंधेरा सीमा गायब हो जाएगी। – Ber