繁体   English   中英

在图像周围绘制一个矩形

[英]Draw a rectangle around image

我想在BufferedImage周围绘制一个矩形,这样它将创建一个类似于框架的边框。

所以我加载2 BufferedImage:

BufferedImage a = ImageIO.read(new File(aPath));
BufferedImage b = ImageIO.read(new File(bPath));

并将其发送以进行绘制:

private void drawImageBorder(BufferedImage imageWithoutBorder) {

    Graphics2D graph = imageWithoutBorder.createGraphics();
    graph.setColor(Color.BLACK);
    //create a black Rectangle - 1px bigger the original image
    graph.fill(new Rectangle(imageWithoutBorder.getMinX(), imageWithoutBorder.getMinY(), imageWithoutBorder.getWidth() + 1, imageWithoutBorder.getHeight() +1));
    //draw the image inside it
    graph.drawImage(imageWithoutBorder, 0, 0, null);
    graph.dispose();
}

由于某种原因它什么也没做,有一些类似的问题,例如在缓冲区图像上绘制填充矩形,但是我找不到有用的答案。

谢谢。

几乎是正确的,但用于放大的尺寸和位置。

BufferedImage image = ImageIO.read(new File(imagePath));
int w = image.getWidth();
int h = Image.getHeight();
int border = 1;

BufferedImage framedImage = new BufferedImage(w + 2*border, h + 2*border, image.getType());

Graphics2D graph = framedImage.createGraphics();
graph.setColor(Color.BLACK);
graph.fill(new Rectangle(0, 0, w + 2*border, h + 2*border));
graph.drawImage(image, border, border, null);
graph.dispose();

可能的原因是,您不保留对映像所做的更改,例如,使用ImageIO.write将它们写回到映像文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM