Blatt mit Bildern füllen

Spin

Top Contributor
Hallo liebe Community,

und zwar habe ich da mal eine kleine Frage ;(

Ich habe ein Blatt der größe 4096 x 4096 pixel.
Nun möchte ich auf dieses Blatt Bilder drauf packen. Davon habe ich knapp 50 Stück.
Alle Bilder haben eine andere Größe.

Damit keine Lücken entstehen muss ich mir irgendetwas ausdenken. Die Bilder sollen sich nicht überlappen. Was also tun?

Die Reihenfolge der Bilder merken wie sie hinzugefügt werden und die Positionen + Breite und Höhe in eine MAP speichern?

Geht das nicht auch irgendwie dynamisch ?

Ich weiß ja nicht wieviele Bilder in einer Reihe sind, da ja alle eine andere Größe haben.
Man könnt auch sagen dass eine Collage am Ende entstehen soll.


Vielen dank, ich hoffe ihr konntet mein Problem nachvollziehen.

früße spin und frohes neues noch an alle :)
 

Spin

Top Contributor
Hallo :)

Also ich würde vielleicht damit anfangen die Bilder der (Original)Größe nach zu sortieren. Alle Bilder die halb so groß wie das größte Original sind würde ich auch in der vergrößerten Version in diese Liste aufnehmen.
Dann würde ich die Bilder mit dem größten beginnend so lange zufällig überlappungsfrei auf der Fläche verteilen, bis es keine Fläche mehr gib, die größ genug für eines der übrigen Bilder ist. (nicht vergessen, dass bei vergrößerten Bildern beide aus der Liste entfernt werden müssen).
Die Restflächen würde ich dann ihrerseits wieder der Größe nach sortieren und die übrigen Bilder auf diese Flächen verteilen: Das kleinste Bild, dass die Teilrestfläche vollständig einnimmt wird gesetzt).

Das wird zwar Deine Forderung (maximal 10% Überlappung, Hintergrund vollständig bedeckt) mglw. nicht erfüllen, sollte aber theoretisch für eine optimale Ausnutzung der Fläche sorgen.

Vielen Dank schonmal :)

1. bilder nach größe sortieren. Das größte Bild oben links hinzufügen und alle weiteren dann danach.
-> bis ende des blattes.
Dann weiter machen mit dem nächsten Foto usw. Dann habe ich jede Menge weiße Bereiche.

Wie kann ich nun die Restflächen sortieren, ich meine wie bekomme ich raus, dass auf diesen Flächen noch kein Bild ist? Dazu das ganze Bild erst wieder auslesen? Andernfalls muss ich mir irgendwie alles merken? Das Problem ist leider noch nicht gelöst :(
 

Timothy Truckle

Top Contributor
1. bilder nach größe sortieren. Das größte Bild oben links hinzufügen und alle weiteren dann danach.
-> bis ende des blattes.
Dann hast Du oben große und unten kleinere Bilder. Muss man wissen, ob einem das gefällt...

Dann weiter machen mit dem nächsten Foto usw. Dann habe ich jede Menge weiße Bereiche

Wie kann ich nun die Restflächen sortieren, ich meine wie bekomme ich raus, dass auf diesen Flächen noch kein Bild ist?.
Beim Setzen der Bilder gibst Du jedem Bild seinen Anfangspunkt. Das Bild kann dann selbts ausrechenen, ob ein gegebener Punkt von ihm bedeckt wird.

In einer Extra-Liste Merkst Du Dir alle Eckpunkte der Bilder. Diese Eckpunkte sorterst Du.
Dann gehst Du diese Liste durch und prüfst mit Hilfe der Bilderliste, ob die vier benachbarten Punke in einem Bild liegen. Die NachbarPunke, die das nicht tun kommen in eine neue Liste. In dieser Liste kann man jetzt mittels 2-dimensionaler Verktor-Rechnung die Kanten der noch freien Rechtecke ermitteln. (Mist, hätte ich doch nur besser in Mathe aufgepasst... :D)

bye
TT
 
D

Dow Jones

Gast
und zwar habe ich da mal eine kleine Frage ;(

Dafür würde die Antwort um so länger ausfallen... Wenn ich die Situation richtig verstanden habe dann handelt es sich um das Distributors Pallet Loading Problem. Böse Sache.
Wenn du schnell eine Lösung brauchst dann ordne die Bilder am besten von Hand einigermaßen brauchbar an. ;)
 

Spin

Top Contributor
Vielen Dank für die Antworten.

Ich schätze dass ich um eine Rekursion nicht drum herum komme und da brauche ich ein wenih Hilfe. Zwar bin geübt in Scala, aber Java macht mir gerade ein wenig Probleme. Versuche es daher iterativ, aber da werd ich irre bei. HILFE ;)

Was mache ich:
Java:
for(int i = 0; i < modIpList.size(); i++) {
// alle bilder hinzufügen auf das Blatt und dass
// mit Logik (Funktioniert alle super.

// sobald nun die position des letzten bildes größer ist als das bild- speicher sie in eine andere liste.
                if(prevPosY > HEIGHT) {
                    modIpListSec.add(ipro); // ipro sind objekte die ein Rechteck haben (x,y,width,height)
                }

}

-> Ergbnis ein Blatt mit vielen Bildern, aber das Blatt hat Lücken, da ja alle unterschiedlich groß sind.

// So wichtig: Die Bilder dürfen sich überlagern, also muss ich jetzt nur nach den "gaps" suchen.

ich gehe also meine zweite liste durch : die modIpListSec , wo nun alle Bilder drin sind, die ja noch nicht auf dem Blatt hinzugefügt wurden.


Java:
// die muss die erste schleife sein, weil hier die abbruch bedingung enthalten ist ( wenn keine bilder, dann ende)
for(int j = 0; j < modIpListSec.size(); j++) {

   // suche nach den lücken (gaps)
  
   // liste durch gehen von bilder die schon hinzugefügt wurden (habe da die bounds von)
   for(int k = 0; k < recs.size(); k++) {

      // so jetzt habe ich mir überlegt zu schauen ob ein gap vorhanden ist: 
     int gap = rec.x + rec.width + 1; // also schauen ob am ende des bildes + 1 kein anderer Punkt eines anderen bildes ist

    // aber um zu prüfen ob da kein bild eines anderen rechtecks ist müsste ich die selbe schleife nochmal durch gehen, also quasi rekursiv mit sich selbst. HELP ;(
  } 


}

Ich habe also das Problem in einer Liste nachzuschauen ob ein Element welches aus dieser Liste kommt die gleichen Koordinaten hat, wie ein anderes in der Liste.


Java:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1)
list.add(2)
list.add(1)
list.add(3);

for(Integer i : list) {
  for(Integer j : list drop 1) {
     // prüfen
  }

}

Entschuldigt stehe völlig auf dem schlauch , vielen dank an alle.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
G Einbinden von Bildern in ausführbare Jar-Datei Java Basics - Anfänger-Themen 25
J Interface Einlesen von Bildern mithilfe von URL zu langsam Java Basics - Anfänger-Themen 5
S Jar Datei mit Bildern Java Basics - Anfänger-Themen 22
J Menü mit mehreren Bildern Java Basics - Anfänger-Themen 5
M Programm fertig stellen, Jar mit Bildern Java Basics - Anfänger-Themen 14
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
P Erste Schritte Navigation mit wechselnden Bildern ... Java Basics - Anfänger-Themen 2
D .jar erstellen (mit Bildern) Java Basics - Anfänger-Themen 5
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
S Bilder der Diashow werden in anderen Bildern angezeigt Java Basics - Anfänger-Themen 3
M Javaprogramm mit Bildern als .jar-Datei exportieren(in Eclipse) Java Basics - Anfänger-Themen 10
H Probleme mit .Jar in Verbindung mit Bildern Java Basics - Anfänger-Themen 10
D Auflösung (dpi) von TIFF und PNG Bildern auslesen Java Basics - Anfänger-Themen 9
N auswertung von bildern Java Basics - Anfänger-Themen 14
Piwi Relative Pfadangabe bei Bildern Java Basics - Anfänger-Themen 2
F Unterschied im Einfügen von Bildern in Applets vs Applications Java Basics - Anfänger-Themen 6
P [Positiv Erledigt] Ordner mit Bildern auslesen und diese speichern Java Basics - Anfänger-Themen 7
N this beim einlesen von bildern Java Basics - Anfänger-Themen 4
D Wasserzeichen in Bildern Java Basics - Anfänger-Themen 16
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
S java.lang.NullPointerException bei Bildern Java Basics - Anfänger-Themen 13
B Fragen zu JAR mit Bildern Java Basics - Anfänger-Themen 4
B Problem beim Laden von Bildern mit AWT Java Basics - Anfänger-Themen 4
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4
sashady 2D-Array mit Zahlenmuster füllen Java Basics - Anfänger-Themen 4
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
T Array füllen Java Basics - Anfänger-Themen 11
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
A Array richtig füllen Java Basics - Anfänger-Themen 2
krgewb Array später füllen Java Basics - Anfänger-Themen 1
E Arrays nach best Muster füllen Java Basics - Anfänger-Themen 4
A Ein Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 4
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
neerual Feld mit Einsen und Nullen füllen und überschreiben Java Basics - Anfänger-Themen 1
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
B Array via Schleife mit ungeraden bzw geraden Zahlen füllen Java Basics - Anfänger-Themen 7
G Model mit Models füllen Java Basics - Anfänger-Themen 9
T Best Practice Liste geschickt füllen Java Basics - Anfänger-Themen 5
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
A Methoden Array mit Methode nacheinander füllen Java Basics - Anfänger-Themen 3
T Arrays mit Schleife füllen Java Basics - Anfänger-Themen 11
D JComboboxen in Abhängigkeiten füllen Java Basics - Anfänger-Themen 7
K Array mit for-each Schleife füllen Java Basics - Anfänger-Themen 5
Z Array-Index einmalig je mit Random füllen Java Basics - Anfänger-Themen 7
K "Elegantes" Füllen eines Models? Java Basics - Anfänger-Themen 20
W String in einer Zeile mit Alphabet füllen? Java Basics - Anfänger-Themen 8
K String Array basierend auf int Array füllen Java Basics - Anfänger-Themen 2
Y Erste Schritte Spielfeld, Array füllen mit Treffern...?! Java Basics - Anfänger-Themen 3
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
K Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen Java Basics - Anfänger-Themen 11
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
B Methoden Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 4
B Methoden 2D Arrays füllen Java Basics - Anfänger-Themen 3
C zwei dimensionales array mit "1 " füllen Java Basics - Anfänger-Themen 8
H zweidimensionales array füllen Java Basics - Anfänger-Themen 6
JG12111989 2D Array mit Array[] füllen Java Basics - Anfänger-Themen 21
J Array mit Zahlen füllen Java Basics - Anfänger-Themen 28
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
T Progressbar füllen? Java Basics - Anfänger-Themen 3
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
S JComboBox automatisch füllen Java Basics - Anfänger-Themen 3
L OOP Grafik in Circle Objekt füllen Java Basics - Anfänger-Themen 3
B Array erstellen,ausgeben,mit zufallszahlen füllen aber wie ? Java Basics - Anfänger-Themen 1
B Collections ArrayList füllen - Anfängerfrage Java Basics - Anfänger-Themen 1
M OOP Liste füllen mit Strings Java Basics - Anfänger-Themen 9
S Mehrdimensionales Array füllen Java Basics - Anfänger-Themen 1
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
P Ein Array mit der Eingaber der User füllen und ausgeben Java Basics - Anfänger-Themen 6
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
S JTabel korrekt mit Datensätzen aus ResultSet füllen Java Basics - Anfänger-Themen 4
I String mit Nullen füllen Java Basics - Anfänger-Themen 4
C JTextField füllen Java Basics - Anfänger-Themen 5
M Kann einen Array nicht füllen, im Nachhinein nur "null"-Werte Java Basics - Anfänger-Themen 11
M char Array füllen Java Basics - Anfänger-Themen 2
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
A List mit integern füllen Java Basics - Anfänger-Themen 4
L String array mit split füllen Java Basics - Anfänger-Themen 14
S externe Webseiten füllen Java Basics - Anfänger-Themen 5
1 Erste Schritte Progressbar füllen ?? Java Basics - Anfänger-Themen 5
P Liste in einer Klasse füllen und mehreren anderen Klassen lesend verwenden Java Basics - Anfänger-Themen 5
F JTable zur laufzeit füllen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben