मैं जावा एप्लिकेशन के हिस्से पर काम कर रहा हूं जो एक बाइट सरणी के रूप में एक छवि लेता है, इसे java.awt.image.BufferedImage
उदाहरण में पढ़ता है और इसे प्रोसेसिंग के लिए किसी तृतीय-पक्ष लाइब्रेरी में भेजता है।क्या BufferedImage उदाहरणों की तुलना करने का कोई आसान तरीका है?
एक यूनिट परीक्षण के लिए, मैं एक छवि (डिस्क पर फ़ाइल से) लेना चाहता हूं और जोर देकर कहता हूं कि यह उसी छवि के बराबर है जो कोड द्वारा संसाधित किया गया है।
- मेरे उम्मीद
BufferedImage
ImageIO.read(URL)
का उपयोग कर डिस्क पर एक PNG फ़ाइल से पढ़ा जाता है। - मेरा परीक्षण कोड उसी फ़ाइल को
BufferedImage
में पढ़ता है और लिखता है कि परीक्षण के तहत सिस्टम को प्रदान करने के लिए पीएनजी के रूप में बाइट सरणी में लिखा जाता है।
जब परीक्षण के अंतर्गत प्रणाली एक नया BufferedImage
मैं बात पर जोर देना है कि दो छवियों एक सार्थक तरीके से बराबर हैं चाहते हैं बाइट सरणी लिखता है। equals()
का उपयोग करना (Object
से विरासत में मिला) काम नहीं करता है (बेशक)। BufferedImage.toString()
मानों की तुलना करना भी काम नहीं करता है क्योंकि आउटपुट स्ट्रिंग में ऑब्जेक्ट संदर्भ जानकारी शामिल है।
क्या किसी को भी कोई शॉर्टकट पता है? मैं एक बड़े आवेदन के एक छोटे से हिस्से में एक इकाई परीक्षण के लिए एक थर्ड-पार्टी लाइब्रेरी नहीं लेना पसंद करूंगा।
क्या आप समझा सकते हैं कि वास्तव में'equals() 'क्यों काम नहीं करेगा? –
@ जेककिंग: यदि यह ऑब्जेक्ट से विरासत में मिला है, तो यह काम नहीं करेगा क्योंकि यह केवल ऑब्जेक्ट पहचान करता है। – Thilo
क्या आप बस बाइट एरे की तुलना नहीं कर सकते (जिसमें पीएनजी है)? – Thilo