/ / पायथन पीआईएल के साथ TIFF छवि रिज़ॉल्यूशन कैसे सेट करें - अजगर, अजगर-इमेजिंग-लाइब्रेरी

पायथन पीआईएल के साथ टीआईएफएफ छवि संकल्प कैसे सेट करें - पायथन, पायथन-इमेजिंग-लाइब्रेरी

मैं टिफ़ इमेज के रिज़ॉल्यूशन को सेट करने के लिए निम्न स्क्रिप्ट का उपयोग करता हूं:

from PIL import Image
im=Image.open("abc.bmp")
im.info
im=im.convert("1")
im.info
im.save("abc.tif")

जैसा कि मैं स्पष्ट रूप से देख सकता हूँ कि का संकल्पछवि है ("डीपीआई": (300, 300)), मेरा मानना ​​है कि आउटपुट टीआईएफएफ छवि में रिज़ॉल्यूशन 300 डीपीआई होना चाहिए। हालाँकि, आउटपुट रिज़ॉल्यूशन अपरिभाषित है जब मैं TIFF फ़ाइल की हेड फ़ाइल जानकारी पढ़ता हूं। संकल्प तय करने पर कोई विचार? धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

मैं "ImageMagick" का उपयोग करता हूं identify फ़ाइल मेटा-डेटा पढ़ने के लिए कार्यक्रम। मेरी सोर्स फाइल थी आदरणीय लीना छवि जिसके लिए:

$ identify -verbose lena.jpg
…
Resolution: 72x72
…

जहां संकल्प JFIF ब्लॉक में निहित है। PIL F इस JFIF ब्लॉक का अनुवाद Image.open में नहीं करता है:

>>> im = Image.open("lena.jpg")
>>> im.info
{"exif": b"Exifx00x00II*x00x08…",
"jfif": 257,
"jfif_density": (1, 1),
"jfif_unit": 0,
"jfif_version": (1, 1)}

हालाँकि, आप TIFF आउटपुट के लिए रिज़ॉल्यूशन निर्दिष्ट कर सकते हैं

>>> im.save("lena.tiff", dpi=(300, 300))
>>> lena = Image.open("lena.tiff")
>>> lena.info
{"compression": "raw", "dpi": (300.0, 300.0)}

तथा identify इससे सहमत

$ identify -verbose lena.tiff
…
Resolution: 300x300
…

† पीआईएल की स्पष्ट मौत पर एक नोट

जहाँ तक मैं बता सकता हूँ, पीआईएल की आखिरी रिलीज 2009 में हुई थी जिसे दबा दिया गया था तकिया परियोजना जो प्रतीत होता है सक्रिय विकास। दुर्भाग्य से, पिलो ने पैकेज का नाम नहीं बदला, इसलिए यदि आप लिखते हैं:

import PIL

या

from PIL import Image

आपको यह जानने का तरीका है कि आप किस पुस्तकालय को छोड़कर काम कर रहे हैं

>>> PIL.PILLOW_VERSION

जिसे पिलो के तहत NameError का उत्पादन करना चाहिए लेकिन पिलो के तहत एक वर्जन नंबर ("2.9.0" नवीनतम रिलीज है)।

यदि आप पिल का उपयोग कर रहे हैं, पिलो का नहीं, तो मुझे कोई अंदाजा नहीं है कि यदि उपरोक्त उत्तर आपके लिए काम करेगा, और मैंने "पीआईएल-ईश कोड जिसे मैं आज पढ़ना चाहता हूं, उसकी सीमा को मारा।"