2013-04-29 6 views
26

मैं एक पायथन स्क्रिप्ट चला रहा हूं लेकिन यह तस्वीर नहीं दिखाएगा।Image.show() चित्र प्रदर्शित नहीं करेगा

मैं इस कार्यक्रम के साथ एक निर्देशिका में एक apple.jpg छवि है और यह तस्वीर दिखाने चाहिए, लेकिन ऐसा नहीं है। यहां कोड है:

#!/usr/bin/env python 

from PIL import Image 

Apple = Image.open("apple.jpg") 
Apple.show() 

मेरा ओएस उबंटू है और यह प्रोग्राम किसी भी त्रुटि को दिखाए बिना पूरा हो जाता है।

+0

त्रुटि/प्रभाव क्या है? –

+0

आपका ऑपरेटिंग सिस्टम और पायथन संस्करण क्या है? क्या आपको कोई त्रुटि संदेश दिखाई देता है? – piokuc

+3

अधिकतर ऐसा इसलिए है क्योंकि आपके ओएस में एक डिफ़ॉल्ट छवि-दर्शक की कमी है, यह मानते हुए कि आप लिनक्स चला रहे हैं। पीआईएल आपके ओएस पर आपकी छवि को "प्रस्तुत करने" पर निर्भर करता है। http://stackoverflow.com/questions/11390596/how-to-display-image-in-pygame – Torxed

उत्तर

35

यह उबंटू पर मेरे लिए काम करता है। यह छविमैजिक के साथ छवि प्रदर्शित करता है। इसे आज़माएं:

sudo apt-get install imagemagick 
+1

ऐसा करने के बाद, यह धन्यवाद – user2131116

+0

@ user2131116: कूल। मदद करने में खुशी। –

+0

मेरे लिए स्थापना के बाद भी काम नहीं करता है ... :( – Kyrol

0

यह हो सकता है कि आपके पास डिफ़ॉल्ट छवि दर्शक सेट न हो। प्रोग्राम के बाहर छवि फ़ाइल खोलने का प्रयास करें और देखें कि क्या यह आपको प्रोग्राम चुनने के लिए कहता है या सिर्फ किसी अन्य प्रोग्राम में खुलता है।

+0

, लेकिन जनहित याचिका डिफ़ॉल्ट छवि व्यूअर का उपयोग करने के प्रतीत नहीं होता। यह * * लेकिन नहीं। मैं पहले ऐसा कम से कम "डिफ़ॉल्ट"। :) –

+0

का एक उपयोगी परिभाषा के लिए नहीं, चित्र खुला होना चाहिए करता है सकते हैं और देखते हैं, लेकिन अगर मैं इस कार्यक्रम करते हैं, यह अभी भी काम नहीं कर रहा। – user2131116

-1

पीआईएल इस बिंदु पर काफी ज्यादा छोड़ दिया गया है। आपको इसके उत्तराधिकारी pillow का उपयोग करने पर विचार करना चाहिए, जिसे easy_install या pip के माध्यम से डाउनलोड किया जा सकता है।

ubuntu पर, मैं सुझाव देंगे निम्नलिखित: sudo apt-get install python-pip

  • स्थापित तकिया: pip install pillow --user
    1. आप अभी तक पिप की जरूरत नहीं है, तो यह apt-get के माध्यम से स्थापित वहां से, आप तकिया स्थापित करने और उसी तरह Image कक्षा का उपयोग करने में सक्षम होना चाहिए।

    +0

    इस मामले में तकिया अलग-अलग व्यवहार नहीं करती है। –

    +0

    @LennartRegebro, क्या आप ओपी के लिए बोल रहे हैं? मुझे डर है कि मैं पालन नहीं करता हूं। विभिन्न प्रकार की छवि प्रदर्शन समस्याओं को अक्सर तकिए में स्विच करके हल किया जाता है। – blz

    +0

    यह कोई राय नहीं है, इसलिए मुझे नहीं लगता कि "बोलने" के लिए यहां कैसे लागू होता है। इसे तकिया पर स्विच करके हल नहीं किया जाएगा। –

    9

    मुझे पता है, यह एक पुराने सवाल है, लेकिन यहाँ मैं यह कैसे Ubuntu में ठीक किया गया है, मामले किसी एक ही समस्या है और ImageMagick (जो समस्या के मूल कारण वैसे भी ठीक नहीं होती है) स्थापित करने के लिए नहीं चाहता है में।

    Ubuntu पर डिफ़ॉल्ट दर्शक टर्मिनल में कमांड "eog" का उपयोग शुरू किया जा सकता है। डिफ़ॉल्ट रूप से तकिया, केवल "xv" और "display" कमांड के लिए खोज करती है, बाद वाला छवि छवि द्वारा प्रदान की जा रही है। इसलिए, यदि आप Imagemagick इंस्टॉल करते हैं, तो "डिस्प्ले" को कॉल करना वास्तव में छवि को खोल देगा। लेकिन दर्शक का उपयोग क्यों न करें जो हमारे पास पहले से है?

    दर्शक को खोलने के लिए पायथन कोड lib/python3.4/साइट-पैकेज/पीआईएल/ImageShow.py (या आपके पायथन इंस्टॉलेशन के बराबर) में पाया जा सकता है। लाइन # 155 नीचे तक स्क्रॉल करें और कोड ब्लॉक कहावत लगता है:

    class DisplayViewer(UnixViewer): 
        def get_command_ex(self, file, **options): 
         command = executable = "display" 
         return command, executable 
    
    if which("display"): 
        register(DisplayViewer) 
    

    कि ब्लॉक कॉपी करें और यह सही नीचे पेस्ट, उबंटू के "eog" कमांड को "प्रदर्शन" आदेश को बदलने:

    class DisplayViewer(UnixViewer): 
        def get_command_ex(self, file, **options): 
         command = executable = "eog" 
         return command, executable 
    
    if which("eog"): 
        register(DisplayViewer) 
    

    ImageShow.py को सहेजने के बाद, तकिया को डिफ़ॉल्ट दर्शक में छवियों को सही ढंग से दिखाना चाहिए()।

    +1

    यह पूरी तरह से काम किया! तो यह पहली जगह में "प्रदर्शन" क्यों सेट किया गया था? फ़ाइल में यह परिवर्तन करने के बाद, कुछ और संभवतः बाद में काम नहीं करेगा, क्योंकि यह "प्रदर्शन" की उम्मीद थी और "अहंकार" नहीं था? –

    +0

    उत्कृष्ट। व्यक्तिगत रूप से मुझे लगता है कि यह स्वीकार किए गए उत्तर से बेहतर है, मैं भी 'ईग' पसंद करता हूं। मुझे नहीं लगता कि आपको कभी ऐसा तरीका मिला है जिसमें स्रोत कोड बदलने में शामिल नहीं है? [पीआईएल image.show] (http://pillow.readthedocs.io/en/3.2.x/reference/Image.html#PIL.Image.Image.show) यह ध्वनि बनाता है जैसे यह एक विकल्प होना चाहिए (लेकिन मैं नहीं कर सकता इसे काम करने के लिए नहीं मिलता है)। इसके अलावा, @Rafael_Espericueta - अगर मुझे लगता है कि करने के लिए किया था, जनहित याचिका डेवलपर्स शायद 'ImageMagick' लाने को प्राथमिकता दी है, क्योंकि यह' eog' के विपरीत, संपादन क्षमताओं मिला है। आखिरकार, _image.show() _ "मुख्य रूप से डिबगिंग उद्देश्यों के लिए था।" –

    4

    मुझे उम्मीद है कि मुझे here किसी के लिए सहायक हो सकता है, यह मेरे लिए काम करता है। यह बताते हैं कि डिफ़ॉल्ट दर्शक कमांड लाइन छवि फ़ाइलों को स्वीकार नहीं करता है जब, आप छवि दिखाने के लिए webbrowser मॉड्यूल का उपयोग कर सकते हैं:

    import Image 
    
    # Apple = Image.open("apple.jpg")  
    # Apple.show() 
    # instead of using .open and .show(), 
    # save the image to show it with the webbrowser module 
    
    filename = "apple.jpg" 
    import webbrowser 
    webbrowser.open(filename) 
    
    +0

    +1 क्योंकि यह फ़ाइल नाम का उपयोग इमेजमैजिक के विपरीत दर्शक विंडो के शीर्षक के रूप में करता है जो कुछ tmp फ़ाइल gibberish नाम का उपयोग करता है। फ़ाइल नाम देखकर मुझे कुछ जरूरी चीज थी .. तो उस छवि मैगिक ने मेरे लिए भी काम किया, यह एक और मुद्दा हल हुआ। –

    2

    यह एक पुरानी सवाल है, तथापि, यह मुझे थोड़ी देर के लिए bugged है है। यह मेरा समाधान है:

    मैं पाइथन 2 चलाता हूं।7 लिनक्स मिंट पर और Image.show() पर कॉल करते समय कुछ भी नहीं होता है। मेरे सिस्टम पर, डिफ़ॉल्ट दर्शक "छवि दर्शक" है, जिसे बैश में "अहंकार" कहा जाता है। मेरा पायथन सोचता है कि मैं कुछ और "xv" का उपयोग कर सकता हूं। तो, एक टर्मिनल खोलने और चलाने "xv" के लिए

    sudo gedit /usr/lib/python2.7/dist-packages/PIL/ImageShow.py 
    

    खोजें और "eog" से बदल दें।

    सहेजें फ़ाइल और Image.show() (डीबगिंग उद्देश्यों के लिए) ठीक काम करता है।

    1

    क्या मेरे लिए काम किया था:

    brew install imagemagick 
    
    संबंधित मुद्दे