स्क्रीन पर पीआईएल छवियों को कैसे दिखाया जाए?


83

मैं पीआईएल परिवाद के साथ कुछ छवि संपादन कर रहा हूं। मुद्दा यह है, कि मैं अपने HDD पर हर बार छवि को एक्सप्लोरर में देखने के लिए सहेजना नहीं चाहता। क्या एक छोटा मॉड्यूल है जो बस मुझे एक विंडो सेट करने और छवि प्रदर्शित करने में सक्षम बनाता है?


छवि कैसे प्रदर्शित करें ? एक ब्राउज़र में?

एक अजगर बनाया खिड़की में। Pygame से एक खिड़की की तरह कुछ। मैं इसे pygame में कर सकता था, लेकिन मैं एक बेहतर समाधान चाहूंगा।
बार्टलोमिएज लेवांडोव्स्की

1
आप इसे क्यों नहीं बचाना चाहते?
जोरन बेज़ले

1
मान लीजिए कि मेरे पास देखने के लिए 100 छोटे चित्र हैं। यह बेहतर होगा अगर मैं उन सभी को मेरी स्क्रीन पर मुद्रित कर सकता हूं, बिना किसी अन्य कार्यक्रम में उन्हें खोलने के लिए। मैं वास्तव में wxpython से परिचित नहीं हूं। क्या यह सरल है?
बार्टलोमिएज लेवांडोव्स्की

1
आपको विंडो खोलने के लिए कुछ विंडो लाइब्रेरी चाहिए- चाहे pygame, wxPython, TkInter, PyQt, PyGtk, PyWin32, PyObjC, आदि। एक बार जब आप एक खिड़की खोल देते हैं, तो उनमें से अधिकांश उस खिड़की में एक छवि प्रदर्शित करने के लिए तुच्छ बनाते हैं।
बजे

जवाबों:


116

से जनहित याचिका ट्यूटोरियल :

एक बार जब आपके पास छवि वर्ग का एक उदाहरण होता है , तो आप छवि को संसाधित करने और हेरफेर करने के लिए इस वर्ग द्वारा परिभाषित तरीकों का उपयोग कर सकते हैं। उदाहरण के लिए, चलिए उस छवि को प्रदर्शित करते हैं जिसे हमने अभी लोड किया है:

     >>> im.show()

अपडेट करें:

आजकल इस Image.show()विधि को औपचारिक रूप से पीआईएल के पिलो कांटे में अलग-अलग ओएस पर कैसे लागू किया जाता है, इसकी व्याख्या के साथ प्रलेखित किया गया है ।


यह वास्तव में मैं क्या देख रहा था, लेकिन मुझे एक विंडोज लाइव फोटो गैलरी त्रुटि मिलती है। 0x800706ba
बार्टलोमिएज लेवांडोव्स्की

3
ऐसा इसलिए है क्योंकि विंडोज लाइव फोटो गैलरी उस समय अस्थायी फ़ाइल PIL के प्रकार से जुड़ी है जिसे आपने विधि कहा है - जो संभवतः विंडोज पर .bmp को डिफॉल्ट करता है जो आधुनिक छवि फ़ाइल स्वरूपों की कई क्षमताओं का समर्थन नहीं करता है। कॉल im.format = "PNG"से पहले .png (यानी ) को स्पष्ट रूप से छवि प्रारूप विशेषता सेट करने का प्रयास im.show()करें।
मार्टीन्यू

अभी भी समस्या बनी हुई है। मैं वास्तव में एक खिड़की परिवाद का प्रयास कर सकता हूं।
बार्टलोमिएज लेवांडोव्स्की

3
PIL का बिल्ट-इन show()मेथड "स्क्रिप्ट को दिखाने के लिए कुछ अन्य प्रोग्राम" का सबसे सरल संभव संस्करण है। (पहले के विंडोज सिस्टम पर आप MSPaint विंडो के पूरे झुंड के साथ समाप्त हो जाते हैं।) यह सुझाव देने और काम करने की कोशिश के लायक था, भले ही यह काम न करे। आप वास्तव में ऐसा ही कुछ कर सकते हैं, और लगभग सरल रूप से, प्रत्येक छवि पर MSPaint.exe को स्पष्ट रूप से लॉन्च कर सकते हैं ...
21

3
@abarnert: वास्तव में समस्या विंडोज लाइव फोटो गैलरी 2011 में एक बग की तरह लग रही है और एक नया संस्करण है जिसे डाउनलोड किया जा सकता है जो पीआईएल show()समस्या को ठीक कर सकता है।
21

22

मैंने इसका परीक्षण किया और यह मेरे लिए ठीक काम करता है:

from PIL import Image
im = Image.open('image.jpg')
im.show()

1
हालांकि यह प्रश्न का उत्तर दे सकता है (अप्राप्त) यह एसओ पर अपने कोड के साथ स्पष्टीकरण प्रदान करने के लिए सबसे अच्छा अभ्यास है। यह वास्तव में कोड को केवल उत्तर देने के लिए हतोत्साहित किया जाता है।
d_kennetz

2
यह Google कोलाब नोटबुक पर काम नहीं करता है।
kawingkelvin

2
@kawingkelvin प्रश्न था "स्क्रीन पर पीआईएल छवियों को कैसे दिखाया जाए?"। आपको अपनी विशिष्ट स्थिति के लिए कहीं और जवाब देना चाहिए ... शायद यहाँ: stackoverflow.com/questions/55288657/…
हार्वे

8

यदि आप पाते हैं कि पीआईएल में कुछ प्लेटफार्मों पर समस्याएं हैं, तो एक देशी छवि दर्शक का उपयोग करने से मदद मिल सकती है।

img.save("tmp.png") #Save the image to a PNG file called tmp.png.

MacOS के लिए:

import os
os.system("open tmp.png") #Will open in Preview.

अधिकांश GNU / Linux सिस्टम के साथ X.Org और एक डेस्कटॉप वातावरण के लिए:

import os
os.system("xdg-open tmp.png")

विंडोज के लिए:

import os
os.system("powershell -c tmp.png")

पंख, MacOS पर, यह आवश्यक रूप से पूर्वावलोकन में नहीं खुलेगा, लेकिन फ़ाइल प्रकार के लिए डिफ़ॉल्ट रूप से। मैं कुछ बड़ी jpg फ़ाइलों के साथ काम कर रहा था, जो कि पूर्वावलोकन .png में कनवर्ट करता है, लगभग 20 सेकंड लेता है। क्रोम के लिए jpg डिफॉल्ट को बदलना अद्भुत काम करता है ...
जॉन व्हाइट

6

हो सकता है कि आप इसके लिए matplotlib का उपयोग कर सकते हैं, आप इसके साथ सामान्य चित्र भी बना सकते हैं। यदि आप शो () एक विंडो में छवि को चबूतरे कहते हैं। इस पर एक नजर डालिए:

http://matplotlib.org/users/image_tutorial.html


2

आप अपने सिस्टम में स्थापित छवि दर्शकों के आधार पर, Tkinter, w / o का उपयोग करके अपनी स्वयं की विंडो में एक छवि प्रदर्शित कर सकते हैं:

import Tkinter as tk
from PIL import Image, ImageTk  # Place this at the end (to avoid any conflicts/errors)

window = tk.Tk()
#window.geometry("500x500") # (optional)    
imagefile = {path_to_your_image_file}
img = ImageTk.PhotoImage(Image.open(imagefile))
lbl = tk.Label(window, image = img).pack()
window.mainloop()

पायथन 3 के लिए, के import Tkinter as tkसाथ बदलें import tkinter as tk


2
आपने कहाँ देखा कि कोड में डिस्क को छवि सहेजना शामिल है ??? सवाल यह है कि किसी चित्र w / o को डिस्क पर सहेजने के लिए हर बार उसे संपादित करने का तरीका पूछा जाए। लेकिन आपको शुरुआत में कम से कम एक बार डिस्क से छवि को खोलना होगा। फिर आप मेमोरी में लोड की गई छवि को 'img' के रूप में संसाधित कर सकते हैं और देख सकते हैं, जितनी बार आप किसी भी डिस्क ऑपरेशन को शामिल करना चाहते हैं।
अपोस्टोलोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.