8 Stimmen

Wie klont man ein Bild?

Ich habe ein Bild. Ich muss eine exakte Kopie davon erstellen und sie in BufferedImage speichern, aber es gibt keine Image.clone(). Die Sache sollte innerhalb einer Berechnungsschleife sein und daher sollte es wirklich schnell sein, kein Pixel-für-Pixel-Kopieren. Was ist die beste Methode, um dies zu tun?

9voto

Levster Punkte 136

Sie können auf ein gepuffertes Bild zeichnen, also machen Sie ein leeres gepuffertesBild erstellen Sie daraus einen Grafikkontext, in den Sie Ihr Originalbild einzeichnen.

BufferedImage copyOfImage = 
   new BufferedImage(widthOfImage, heightOfImage, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(originalImage, 0, 0, null);

1voto

Angelo Alvisi Punkte 490

Es gibt einen anderen Weg:

BufferedImage copyOfImage = image.getSubimage(0, 0, image.getWidth, image.getHeight);

0voto

phil294 Punkte 9218

Image clone = original.getScaledInstance(original.getWidth(), -1, Image.SCALE_DEFAULT);

Das ist vielleicht nicht sehr schön, aber getScaledInstance gibt, wie der Name schon sagt, eine Instanz Ihrer ursprünglichen Image Objekt. Wird normalerweise nur zur Größenänderung verwendet. -1 teilt der Methode mit, dass das Seitenverhältnis beibehalten werden soll

0voto

Adan Vivero Punkte 523

Sie können eine Methode erstellen, die das Teilbild des Bildes zurückgibt, das Sie klonen möchten.

Zum Beispiel:

public static BufferedImage clone(BufferedImage img)
{
  return img.getSubimage(img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight());
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X