jpg.Bilder teilen/bearbeiten für Puzzle

Status
Nicht offen für weitere Antworten.
C

Centurio

Gast
Hallo erstmal
Ich versuche zur Zeit ein Puzzlespiel zu programmieren, in dem man die Puzzlestuecke per Maus anklickt, verschieben kann usw. wenn man nah genung an dem "richtigen" Teil ist snappt das verschobene Teil automatisch an das andere.
Soweit so gut das funktioniert auch schon aber ich habe folgende Frage zu den Bildern.

Ich würde gerne jedes beliebige Bild (jpg Format und evtl. festgelegte Pixelgröße) einlesen können und dann zerschneiden / bearbeiten können.

Dafür würde ich gerne wissen wie ich aus einem Image viele Kleine erstmal rechteckige Image Instanzen bekomme. Oder wie ich eine allgemeines jpg Bild so einlese, dass es viele quadratisch/rechteckige Teile produziert die ich dann Z.B. per Graphics.drawImage() zeichnen kann.

In einem Zweiten Schritt interessiert mich noch wie ich ein Bild so zerschneide, dass die typischen Puzzlestucke entstehen.

Vielen Dank schonmal für eure Hilfe.

Mfg Centu
 

The_S

Top Contributor
Du kannst das Bild mit ImageIO als BufferedImage einlesen und dir von dem dann mittels getSubimage deine gewünschten Teile als kleine Bilder rauskopieren.
 
C

Centurio

Gast
Vielen Dank hat funktioniert!

Nun noch ne Frage. Ich möchte alle beliebigen Bilder benutzen können, die müssen dafür vom Programm auf die richtige Größe gebracht werden. Dafür benutze ich Image.getScaledInstance(...) dummerweise gibt der nur ein Image zurück welches ich nicht auf BufferedImage casten kann, obwohl ichs von einem BufferedImage aus aufrufe, somit kann ich auch aus dem entstandene Bild nicht mehr mit getSubimage(...) kleine Bilder kopieren...

Weiss jemand eine elegante Lösung dafür ?
 

The_S

Top Contributor
Code:
Graphics2D g2D = buffimage.createGraphics();
g2D.drawImage(scaledIamge, 0, 0, this);
 
C

Centurio

Gast
Sorry, aber das kapier' ich nicht...

buffimage soll das BufferedImage sein, welches ich z.B. aus der Datei geladen habe. Und scaledImage ist das welches ich per buffimage.getScaledInstance() gewonnen habe.

Jetzt kann ich aber weder mit Graphics noch mit Graphics2D einen bestimmten Bereich aus einem Image zeichnen.
 

The_S

Top Contributor
Du bekommst ja mit getScaledImage ein Ojekt des Types Image zurück, möchtest das ganze aber in einem BufferedImage haben um mit getSubimage arbeiten zu können. Richtig?

Mein Code wandelt ein Image in ein BufferedImage um.

Code:
BufferedImage origImage = ImageIO.read(file);
Image scaledImage = origImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage scaledBuffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = scaledBuffImage.createGraphics();
g2D.drawImage(scaledImage, 0, 0, this);
g2D.dispose()

Du lädst zuerst dein Image (im Beispiel mit ImageIO.read) skallierst es dann mit getScaledInstance. Dadurch bekommst du ein Objekt des Types Image, welches du aber als BufferedImage möchtest. Weil du das nicht einfach casten kannst, musst du das Image auf ein neues BufferedImage zeichnen. Und das geht mit Graphics2D und createGraphics().

Jetzt klarer?
 
C

Centurio

Gast
Jawohl,
tolle Sache dankeschön, auf die idee wäre ich sicher net so schnell gekommen...
 
C

Centurio

Gast
Also danke nochmals für die Hilfe.

Als nächstes stellt sich mir die Frage wie ich die "typische" Puzzleform zeichnen kann. Bisher habe ich nur Rechteckige Puzzlestuecke.

Mein Programmentwurf sieht in etwa so aus, dass ich pro Puzzlestück bis zu 4 Kanten habe, die jeweils ihre "richtigen" Gegenkanten kennen und so den Abstand voneinander berrechnen.
Somit wäre es mir möglich, die Kanten anstelle des immer quadratischen Puzzlestückes zu zeichnen.
Mein erster Ansatz wäre einfach einen größeren Rechteckigen Bereich auszuschneiden und es den Kanten zu überlassen den Teil zu übermalen, der nicht sichtbar ist. Jede Kante besitzt entweder so einen Knubbel oder eben ein Loch.

Wie aber kann ich ein nicht rechteckiges Bild schnell und leicht aus einem Bild ausschneiden, und / oder zuverlässig zeichnen ?

Mfg Centurio
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bilder werden unscharf angezeigt Spiele- und Multimedia-Programmierung 5
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
beatles Minesweeper - keine Bilder Spiele- und Multimedia-Programmierung 3
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
O Bilder senden TV über DLNA? Spiele- und Multimedia-Programmierung 0
T Bilder Elegant darstellen... Spiele- und Multimedia-Programmierung 7
T Bilder einbinden, bzw. ändern Spiele- und Multimedia-Programmierung 5
M Bilder effizient speichern/serialisieren Spiele- und Multimedia-Programmierung 10
M Bilder in Java Spiele- und Multimedia-Programmierung 7
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
B Bilder in GUI ändern ohne repaint() Spiele- und Multimedia-Programmierung 6
T Spielautomat bilder vergleichen Spiele- und Multimedia-Programmierung 34
A Bilder werden nicht geladen Spiele- und Multimedia-Programmierung 6
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
A Bilder (auf JPanels) auf komplette Zellengröße (GridBagLayout) skalieren Spiele- und Multimedia-Programmierung 2
I Bilder aus Quaxli's Tutorial Spiele- und Multimedia-Programmierung 3
A bilder performant und unhässlich skalliert darstellen? Spiele- und Multimedia-Programmierung 10
A 2 Bilder übereinander legen Spiele- und Multimedia-Programmierung 15
J 2D-Bilder in Java3D Spiele- und Multimedia-Programmierung 4
A Bilder(BMP) speichern Spiele- und Multimedia-Programmierung 2
S Bilder zuscheiden - Werte von php übergeben Spiele- und Multimedia-Programmierung 7
D Bilder besser interpolieren Spiele- und Multimedia-Programmierung 4
F Dynamische Bilder erzeugen? Spiele- und Multimedia-Programmierung 7
R Bilder aus animierter .gif extrahieren? Spiele- und Multimedia-Programmierung 4
A Bilder bewegen Spiele- und Multimedia-Programmierung 2
M Bilder verzerren [Rechteck -> Trapez] Spiele- und Multimedia-Programmierung 4
K Bilder drehen Spiele- und Multimedia-Programmierung 5
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
H Bilder speichern Spiele- und Multimedia-Programmierung 3
A Bilder flackern Spiele- und Multimedia-Programmierung 5
T Gekachelte Bilder darstellen Spiele- und Multimedia-Programmierung 2
aze Java3D: Flächen teilen Spiele- und Multimedia-Programmierung 15
Redfrettchen Tastatur für zwei Spieler teilen? Spiele- und Multimedia-Programmierung 8
P svg bearbeiten Spiele- und Multimedia-Programmierung 0
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
S MP3 Datei informationen bearbeiten Spiele- und Multimedia-Programmierung 9
K Button eigenschaften bearbeiten Spiele- und Multimedia-Programmierung 20
R TransformGroup finden und bearbeiten Spiele- und Multimedia-Programmierung 8
S BMP-Bild Pixel für Pixel bearbeiten Spiele- und Multimedia-Programmierung 1
H Transformgroup zur Laufzeit bearbeiten Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben