2011-12-15 2 views
2

Я запрограммировал что-то вроде краски. У меня есть JPanel, и я могу рисовать его. Я использую только черную линию. Я хочу преобразовать его в двоичный массив, где 1 - когда пиксель черный, 0 - белый (фон). Возможно? Как это сделать?Преобразование JPanel в двоичный массив

+0

http://stackoverflow.com/questions/113897/how-do-i-get-the-image-paint-paintcomponent-generates должно помочь вам начать – Robin

ответ

2

Вкратце, создайте BufferedImage с такими же размерами, как ваш JPanel и paint the panel. Затем вы можете выполнить итерацию по растровому изображению, чтобы получить последовательность значений цветов пикселей, соответствующих черно-белым. Например

// Paint the JPanel to a BufferedImage. 
Dimension size = jpanel.getSize(); 
int imageType = BufferedImage.TYPE_INT_ARGB; 
BufferedImage image = BufferedImage(size.width, size.height, imageType); 
Graphics2D g2d = image.createGraphics(); 
jpanel.paint(g2); 

// Now iterate the image in row-major order to test its pixel colors. 
for (int y=0; y<size.height; y++) { 
    for (int x=0; ix<size.width; x++) { 
    int pixel = image.getRGB(x, y); 
    if (pixel == 0xFF000000) { 
     // Black (assuming no transparency). 
    } else if (pixel == 0xFFFFFFFF) { 
     // White (assuming no transparency). 
    } else { 
     // Some other color... 
    } 
    } 
} 
+0

Смотрите также [ComponentImageCapture.java] (http://stackoverflow.com/questions/5853879/java-swing-obtain-image-of-jframe/5853992#5853992). –

Смежные вопросы