如何将图像分成两部分,增加其中一部分的对比度并降低另一部分的对比度?

发布于 2024-12-18 01:51:47 字数 187 浏览 1 评论 0原文

我必须编写一个 Java 程序,其中包含一个带有图像的面板。用户在图像上单击两次后,程序必须增加图像中这两点之间的部分的对比度,并降低其余部分的对比度。我需要一些关于如何执行此操作的一般说明。

我知道我必须使用 Java 2D,并且我知道如何增加或减少图像的对比度。但是,我不确定如何将图像分成两部分。

预先感谢所有回答的人:)

I have to do a Java program that contains a panel with an image in it. After the user clicks twice on the image, the program must increase the contrast of the part of the image that is enclosed between these two points and decrease the rest of it. I need some general instructions on how to do this.

I know that I will have to use Java 2D and I know how to increase or decrease the contrast of the image. However, I am not sure how can I separate the image in two parts.

Thanks in advance everybody who answers :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍暮颜 2024-12-25 01:51:47

您可以使用这段代码。它将图像分割成单元格,并且很好地完成了工作:)

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;
}

You can use this piece of code. It splits the image into cells and it does the job very well :)

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文