Kleineres Bild an bestimmte Koordinaten setzen

Diskutiere Kleineres Bild an bestimmte Koordinaten setzen im AWT, Swing, JavaFX & SWT Bereich.
C

Caliburns

Hallo,

gibt es eine einfache Möglichkeit, ein kleineres Bild in ein anderes (größeres) Bild an bestimmte Koordinaten zu schreiben? Das größere Bild soll an dieser Stelle von dem kleineren überlagert werden. Das ganze soll wirklich eine eigene Implementierung, ohne das Paket java.awt.Graphics2D werden.

Danke und Viele Grüße
 
MoxxiManagarm

MoxxiManagarm

Keine Ahnung worauf du hinaus willst. Hast du mal ein Beispiel oder sowas?
 
S

Steven Hachel

Würde mich auch interessieren, was deine Idee dahinter ist...
Die einfachste Variante zur Realisierung wäre in deinem Falle ja mit Graphics/Graphics2D.
Mit JavaFX gehts auch, aber das wäre dafür wohl etwas zuviel des Guten.

Steven
 
C

Caliburns

Die grundsätzliche Idee ist, ein gegebenes Bild, in einzelne Teile/Flächen aufzuteilen. Und diese einzelnen Flächen sollen dann durch andere Bilder, die die gleiche Größe wie die einzelnen Flächen haben ausgetauscht werden können.

Mein jetziger Gedankengang ist folgender: Ich habe ein großes Bild, von dem hole ich mit getSubImage einen Teilbereich heraus. Diesen ersetze ich durch ein mir vorliegendes passendes Bild. Scheitern tue ich daran, das "neue" Bild wieder aufzubauen. Es gibt ja keine Methode mit der ich das neue Bild, an seinen alten Platz wieder zurücksetzen kann, bzw. muss es gar nicht unbedingt ins alte Bild zurück, sondern es soll einfach ein neues Bild eben schrittweise aus den neuen Teilbildern aufgebaut werden.

Über die draw-Methode von Graphics ist das kein Problem. Hier kann ich ja die entsprechenden Koordinaten angeben, an der das Teilbild gesetzt werden soll. Die Verwendung dieser Methode/Klasse möchte ich aber vermeiden.
 
Zuletzt bearbeitet:
MoxxiManagarm

MoxxiManagarm

Die grundsätzliche Idee ist, ein gegebenes Bild, in einzelne Teile/Flächen aufzuteilen. Und diese einzelnen Flächen sollen dann durch andere Bilder, die die gleiche Größe wie die einzelnen Flächen haben ausgetauscht werden können.
Dann würde ich da aber auch so rangehen und das Bild in diese Flächen aufteilen. Wenn du das tust, kannst du mit ImageIcon die Bilder auf deine Komponente malen und brauchst kein Graphics dafür.

Was ich meine kannst du auch hier gut sehen:
 
S

Steven Hachel

Huhu,

hab da mal einen ganz einfachen Ansatz für dich...
Gibt für sowas ja etliche Möglichkeiten. :)

Code:
        BufferedImage bufferedImage = ImageIO
                .read(BufferedImageAreaTest.class.getResourceAsStream("/images/source.png"));
        BufferedImage bufferedImageSmall = ImageIO
                .read(BufferedImageAreaTest.class.getResourceAsStream("/images/addToSource.png"));

        int width = bufferedImageSmall.getWidth(), height = bufferedImageSmall.getHeight();
        int i = 0;
        int[] pixels = new int[width * height];
        for (int x = 0; x < bufferedImageSmall.getWidth(); x++) {
            for (int y = 0; y < bufferedImageSmall.getHeight(); y++) {
                pixels[i] = bufferedImageSmall.getRGB(x, y);
                i++;
            }
        }

        int xPos = 0, yPos = 0;
        i = 0;
        for (int x = xPos; x < width + xPos; x++) {
            for (int y = yPos; y < height + yPos; y++) {
                bufferedImage.setRGB(x, y, pixels[i]);
                i++;
            }
        }

        ImageIO.write(bufferedImage, "png", Files.newOutputStream(Paths.get("I:\\temp\\newSource.png")));
Steven
 
C

Caliburns

Wollte ich gerade schreiben, habe es durch pixelweises setzen der RGB-Werte hinbekommen. :)
Ich danke euch!
 
Thema: 

Kleineres Bild an bestimmte Koordinaten setzen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben