BufferedImage
के प्रत्येक पिक्सेल के आरजीबी मान को प्राप्त करने का सबसे तेज़ तरीका क्या है?बुफर्ड छवि के प्रत्येक पिक्सेल के लिए आरजीबी मान प्राप्त करने के लिए तेज़ तरीका चाहिए
अभी मुझे नीचे दिए गए कोड में दिखाए गए दो for
लूप का उपयोग करके आरजीबी मूल्य प्राप्त हो रहा है, लेकिन उन मानों को प्राप्त करने में बहुत लंबा समय लगता है क्योंकि नेस्टेड लूप मेरी छवि के लिए कुल 47 99 99 बार चलाता है। अगर मैं 16-बिट छवि का उपयोग करता हूं तो यह संख्या भी अधिक होगी!
मुझे पिक्सेल मान प्राप्त करने के लिए एक तेज़ तरीका चाहिए।
BufferedImage bi=ImageIO.read(new File("C:\\images\\Sunset.jpg"));
int countloop=0;
for (int x = 0; x <bi.getWidth(); x++) {
for (int y = 0; y < bi.getHeight(); y++) {
Color c = new Color(bi.getRGB(x, y));
System.out.println("red=="+c.getRed()+" green=="+c.getGreen()+" blue=="+c.getBlue()+" countloop="+countloop++);
}
}
पाया सरणी से बाहर अलग-अलग रंगों को पढ़ने के लिए 'यह और भी बढ़ सकता है जब मैं 16 बिट image' का उपयोग करेगा - क्यों होगा पुनरावृत्तियों की संख्या प्रति पिक्सल बिट्स पर निर्भर करती है? और इसके लिए उपयोग का मामला क्या है? ध्यान दें कि 'रंग' ऑब्जेक्ट्स बनाने के साथ-साथ कंसोल को प्रिंट करने में कुछ समय लगता है। यदि आप सभी 47 99 99 पिक्सल तक पहुंचना चाहते हैं तो आप लूप से छुटकारा नहीं पा सकते हैं (आप उन्हें एक में विलय कर सकते हैं लेकिन इससे बड़ा अंतर नहीं होना चाहिए)। – Thomas
आउटपुट पूरे लूपिंग को धीमा कर देता है। इसके बिना कोशिश करो। –
यह println –