2017-08-16 6 views
0

Ich möchte ein Rechteck um BufferedImage zeichnen, so wird es einen Rahmen wie Rahmen erstellen.Zeichnen Sie ein Rechteck um das Bild

So laden I 2 BufferedImage:

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

Und es zum Zeichnen senden:

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

Aus irgendeinem Grund es nichts tut, gibt es similer Fragen wie drawing-filled-rectangle-over-a-bufferedimage aber ich konnte nicht finnd hilfreiche Antworten .

Danke.

Antwort

0

Fast richtig, aber für die vergrößerte Größe und Positionierung.

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

Das Ergebnis versuchen und bekanntgeben. –

+0

Nun, ich habe es getestet und es tut nichts, irgendwelche Ideen? –

+0

Versuchen Sie, 'border' auf 4 zu setzen, um die Erkennung zu erleichtern (in/exclusive rect boundary), und schreiben Sie gerahmtesImage in eine neue Datei mit ImageIO.write. –

Verwandte Themen