2012-08-20 23 views
6

मैं स्विंग का उपयोग करके एक यूआई बना रहा हूं और मैं JLabel में एक छवि प्रदर्शित करना चाहता हूं। कोड का उपयोग मैं है निम्नलिखित:Toolkit.getDefaultToolkit()। CreateImage() बनाम ImageIO.read()

JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg")))); 

यह ठीक काम करता है अगर मैं png छवियों का उपयोग लेकिन जब यह (केवल उनमें से कुछ), मैं एक redish छवि प्राप्त (एक मैं देख रहा हूँ तुलना में एक अलग से एक jpg की बात आती है पेंट.नेट में)। छवि मैं इस्तेमाल किया यह एक है: img.jpg

तो मैं (एक विकल्प के रूप) की कोशिश की:

Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath()); 
  1. किसी को यह क्यों हो रहा है की एक विचार है? क्या यह एक विशेष JPEG प्रारूप है जो समर्थित नहीं है?
  2. मैंने इस मंच पर पढ़ा है कि ज्यादातर लोग छविियो (here उदाहरण के लिए) का उपयोग करने की सलाह देते हैं। क्यूं कर?

धन्यवाद एक बहुत

+1

वैकल्पिक काम किया था? – ShiDoiSi

+2

हां यह करता है। यही कारण है कि मुझे आश्चर्य है कि लोग अन्य तरीकों की सिफारिश क्यों करते हैं ... –

+1

रुको, मुझे टूलकिट जावा डॉक्स में कोई भी 'createImage (फ़ाइल f) 'नहीं मिल रहा है ... यकीन है? – ShiDoiSi

उत्तर

7

जैसा कि here पर चर्चा की गई है, आपकी जेपीईजी छवि में नकली पारदर्शिता जानकारी हो सकती है। here दिखाए गए अनुसार एक संगत रंग मॉडल वाले बफर में छवि को प्रस्तुत करना एक साधारण उपयुक्त है।

+1

यह भी देखें [' createCompatibleImage() '] (http://docs.oracle.com/javase/6/docs/api/ जावा/AWT/GraphicsConfiguration.html)। – trashgod

5

ऐसा लगता है कि आप (मैं लाल रंग पुन: पेश कर सकते हैं और यह निश्चित रूप से यह कैसे की तरह दिखना चाहिए नहीं है) ImageIO.read में एक बग मिला है ...।

आप अन्य सेटिंग्स के साथ जेपीईजी फ़ाइलें बचाने

  • की कोशिश कर सकते
  • खुला/पुनः बचाने के अन्य कार्यक्रमों के साथ फ़ाइल
  • या उपयोग (एक अधिक सामान्य जेपीईजी एन्कोडिंग पाने के लिए उम्मीद कर रहा) टूलकिट विधि (यदि आप छवियों को नियंत्रित नहीं करते हैं)।

टूलकिट विधि के साथ एकमात्र समस्या यह है कि getImage() विधि लागू होने के तुरंत बाद लौटती है और पृष्ठभूमि थ्रेड पर लोड हो रहा है, इसलिए आप तुरंत छवि ऑब्जेक्ट के साथ काम करना शुरू नहीं कर सकते हैं।