Как я могу разделить изображение на две части, увеличив контрастность одной его части и уменьшив контрастность другой? - PullRequest
1 голос
/ 27 ноября 2011

Мне нужно сделать программу на Java, которая содержит панель с изображением. После того, как пользователь дважды щелкнет изображение, программа должна увеличить контраст части изображения, заключенной между этими двумя точками, и уменьшить остальную часть изображения. Мне нужны общие инструкции о том, как это сделать.

Я знаю, что мне придется использовать Java 2D, и я знаю, как увеличить или уменьшить контраст изображения. Однако я не уверен, как разделить изображение на две части.

Заранее спасибо всем, кто ответит:)

1 Ответ

0 голосов
/ 27 ноября 2011

Вы можете использовать этот кусок кода.Он разбивает изображение на ячейки и отлично справляется со своей задачей:)

public static BufferedImage[] splitImage(BufferedImage img, int cols, int rows) {
    int wCell = img.getWidth()/cols;
    int hCell = img.getHeight()/rows;
    int imageBlockIndex = 0;
    BufferedImage imgs[] = new BufferedImage[wCell *hCell ];
    for(int y = 0; y < rows; y++) {
        for(int x = 0; x < cols; x++) {
            imgs[imageBlockIndex] = new BufferedImage(wCell , hCell , img.getType());
            // Draw only one portion/cell of the image
            Graphics2D g = imgs[imageBlockIndex].createGraphics();
            g.drawImage(img, 0, 0, wCell , hCell , wCell *x, 
                                    hCell *y, wCell *x+wCell , hCell *y+hCell , null);
            g.dispose();
            imageBlockIndex++;
        }
    }
    return imgs;
}
...