Tuesday 15 September 2015

java - How to create image from RGB values which have been saved in .txt -


  आयात करें java.awt। *; Import java.awt.event। *; Import java.awt.image। *; Import java.io * *; आयात java.util.Scanner; आयात करें java.util.StringTokenizer; आयात javax.imageio। *; आयात javax.swing। *; सार्वजनिक श्रेणी निर्मित छवि I इंट पिक्सेल = 265 * 190; इंट स्टीग = 3; Int p, s; Int [] [] rgb_steg = नया इंट [पिक्सेल] [स्टीग]; सार्वजनिक CreateImage () अपवाद फेंकता {try {img = ImageIO.read (नई फ़ाइल ("cover-fruits.jpg")); } पकड़ (IOException ई) {} फ़ाइल एफ = नया फ़ाइल ("stego_rgb.txt"); अगर (! (F.exists ())) {System.out.println ("क्षमा करें फ़ाइल मौजूद नहीं है"); System.exit (0); } स्कैनर = नए स्कैनर (एफ); स्ट्रिंग डेटा = नल; इंट आरजीबी = 0; इंट आरजीबी 1 = 0; पी = 0; जबकि (in.hasNextInt ()) {data = in.nextLine (); स्ट्रिंगटोकनाइज़र st = नया स्ट्रिंगटोकनाइज़र (डेटा, ""); (एस = 0; एस एंड लेफ्टिग; स्टीग; एस ++) के लिए {आरजीबी = इंटीजर। पीआरआईआईएनटी (सेंट। एनएक्सटीकन ()); आरजीबी_एसटीजी [पी] [एस] = आरजीबी; आरजीबी 1 = आरजीबी_एसटीजी [पी] [एस]; } पी ++; } के लिए (int y = 0; y & lt; img.getHeight (); y ++) {के लिए (int x = 0; x & lt; img.getWidth (); x ++) {img.setRGB (x, y, rgb1); }} फ़ाइल आउटपुट = नई फ़ाइल ("saved.png"); ImageIO.write (आईएमजी, "पीएनजी", आउटपुट); Img = ImageIO.read (नई फ़ाइल ("saved.png")); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता {JFrame f = new JFrame ("Load Image"); F.addWindowListener (नया WindowAdapter () {सार्वजनिक शून्य खिड़की बंद (WindowEvent ई) {System.exit (0);}}); F.add (नया CreateImage ()); f.pack (); f.setVisible (सही); }}   

मैं आरजीबी मूल्यों को .txt से पढ़ने और छवि बनाने की कोशिश कर रहा हूं। लेकिन मैंने इसे करने के लिए प्रबंधन नहीं किया। मेरे पास कुछ विचार हैं लेकिन अभी भी इसे प्राप्त नहीं कर सके। आशा है कि कोई भी मेरी मदद कर सकता है।

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

  import java.awt। *; Import java.awt.image। *; आयात javax.swing। *; सार्वजनिक वर्ग ImageFromArray2 JFrame {int चौड़ाई = 50; तीव्रता ऊंचाई = 50; Int imageSize = चौड़ाई * ऊंचाई * 3; सार्वजनिक ImageFromArray2 () {JPanel पैनल = नया JPanel (); GetContentPane ()। जोड़ें (पैनल); Int [] पिक्सल = नया इंट [इमेजसिस]; // के लिए लाल छवि बनाएं (इंट आई = 0; आई & lt; इमेज साइज़; आई + = 3) {पिक्सल [आई] = 255; पिक्सल [i + 1] = 0; पिक्सेल [i + 2] = 0; } Panel.add (createImageLabel (पिक्सल)); // ग्रीन छवि बनाएं (इंट आई = 0; आई & lt; इमेज साइज़; आई + = 3) {पिक्सल [आई] = 0; पिक्सल [i + 1] = 255; पिक्सेल [i + 2] = 0; } Panel.add (createImageLabel (पिक्सल)); // के लिए ब्लू छवि बनाएं (इंट आई = 0; आई & lt; इमेज साइज़; आई + = 3) {पिक्सल [आई] = 0; पिक्सल [i + 1] = 0; पिक्सल [i + 2] = 255; } Panel.add (createImageLabel (पिक्सल)); // के लिए सियान छवि बनाएं (इंट आई = 0; आई & lt; इमेज साइज़; आई + = 3) {पिक्सल [आई] = 0; पिक्सल [i + 1] = 255; पिक्सल [i + 2] = 255; } Panel.add (createImageLabel (पिक्सल)); } निजी JLabel createImageLabel (int [] पिक्सेल) {BufferedImage image = नया BufferedImage (चौड़ाई, ऊंचाई, BufferedImage.TYPE_INT_RGB); लेखनयोग्य रेस्टर रास्टर = image.getRaster (); रास्टर .सेटपिक्सेल (0, 0, चौड़ाई, ऊंचाई, पिक्सेल); जेएलैबल लेबल = नया जेएलैबेल (नया इमेचिन (छवि)); वापसी लेबल; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग अरिज []) {JFrame फ्रेम = नया ImageFromArray2 (); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.pack (); फ्रेम.सेट स्थान स्थानापन्न (नल); फ्रेम.सेस्विज़िबल (सच); }}   

यह एक साधारण सरणी का उपयोग करता है, लेकिन आपको प्रत्येक पिक्सेल के लिए आरजीबी मान निर्दिष्ट करने के लिए 3 स्लॉट की आवश्यकता होती है।

No comments:

Post a Comment