JAVA的奇怪行为:getSubimage()函数

时间:2016-06-13 20:29:43

标签: java image

你好,

我正在运行以下代码来制作我的JPanel的截图。

private void makePanelImage(Component panel, String saveAs) {
    Dimension size = panel.getSize();
    BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);

    // CROP
     // BufferedImage cropped = image.getSubimage(9, 31, 2459, 3467);
     BufferedImage cropped = image.getSubimage(1800, 2000, 500, 700);

    Graphics2D g2 = cropped.createGraphics();
    panel.paint(g2);
    saveAs = saveAs + ".png";
    try {
        ImageIO.write(cropped, "png", new File(saveAs));
        System.out.println("Image Saved: " + saveAs);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

有问题的部分是:

BufferedImage cropped = image.getSubimage(1800, 2000, 500, 700);

无论我将X和Y设置为 - 它始终被视为忽略。因为它会是0和0.我不明白为什么?有没有人遇到过这个?第二部分 - 宽度和高度确实对图像产生影响,我可以将它缩小到我想要的程度 - 这很好。但是光栅WONT的左上角“开始”移动。

这是一个错误吗?

注意:有趣的是,我将它设置为OFFSET + WIDTH> ORIGINAL我收到一个错误 - 这是合乎逻辑的,但它仍然不会被“移动”

我在这里想念一下吗?

1 个答案:

答案 0 :(得分:1)

你可以试试这个

BufferedImage image = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
panel.paint(g2);
BufferedImage cropped = image.getSubimage(1800, 2000, 500, 700);