आप एक सरणी में उत्पन्न छवियों के सभी आरजीबी मूल्यों पढ़ सकते हैं और एक पहले से बनाई गई छवि का प्रतिनिधित्व करता है, तो आप पूरी छवि के बारे में वास्तव में विशिष्ट हैं एक के खिलाफ है कि 2 डी सरणी तुलना सकता है।
यदि आप फ़ॉन्ट्स को अनदेखा करना चाहते हैं, तो आप छवि के उन क्षेत्रों के लिए भी ऐसा ही कर सकते हैं जिनमें छवियों के आधार पर पर्यावरण के आधार पर कोई परिवर्तनीय डेटा नहीं है। यूनिट परीक्षणों के लिए सुधार और सामान्यीकरण दिनचर्या में बिल्डिंग समय की बर्बादी होगी, जब तक कि एप्लिकेशन को इस तरह की उच्च सटीकता की छवियों को जरूरी नहीं बनाया जाता है।
private void compareRasterImages(BufferedImage expectedPngIo, BufferedImage actualPngIo) throws AssertionError {
int minX = expectedPngIo.getMinX();
int minY = expectedPngIo.getMinY();
int maxX = expectedPngIo.getMinX() + expectedPngIo.getWidth();
int maxY = expectedPngIo.getMinY()+ expectedPngIo.getHeight();
assertEquals(minX, actualPngIo.getMinX());
assertEquals(minY, actualPngIo.getMinY());
assertEquals(expectedPngIo.getHeight(), actualPngIo.getHeight());
assertEquals(expectedPngIo.getWidth(), actualPngIo.getWidth());
for (int x_i = minX; x_i < maxX; x_i++){
for (int y_i = minY; y_i < maxY; y_i++) {
assertEquals(expectedPngIo.getRGB(x_i, y_i), actualPngIo.getRGB(x_i, y_i));
}
}
}
मैं अपने पीएनजी से BufferedImage पुनः प्राप्त (के रूप में बाइट []) का उपयोग कर ImageIO:
BufferedImage expectedPngIo = ImageIO.read(new ByteArrayInputStream(expectedPng));
enter code here
स्रोत
2010-08-03 21:21:41
अच्छा, आप निश्चित रूप से क्या देखना चाहते हैं? –
अच्छा सवाल :-) अब, जैसा कि मैं इसके बारे में सोचता हूं, शायद यह जांचना महत्वपूर्ण नहीं है कि छवि बिल्कुल अपेक्षित है या नहीं, लेकिन कुछ अपेक्षित विशेषताएं मौजूद हैं या नहीं। – PeWu