2017-08-16 176 views
0

我想围绕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(); 
} 

出于某种原因,它什么都不做,也有像drawing-filled-rectangle-over-a-bufferedimage similer的问题,但我不能finnd有用的答案。

谢谢。

回答

0

几乎是正确的,但为放大的大小和定位。

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(); 
+0

尝试并发布结果。 –

+0

嗯,我已经测试过它,它什么也没做,有什么想法? –

+0

尝试将'border'设置为4以便检测(在/独占矩形边界),并将framedImage写入带有ImageIO.write的新文件。 –