![]() |
[Java] Bild Größe anpassen/ändern
Hallo Leute,
Ich habe ein Problem mit meinem "Java Bild Anzeige Programm". Kurze Beschreibung: Alles mit Swing/GUI verschönert. Programm fordert auf ein Bild (JPEG) von der Festplatte auszuwählen. Dieses wird durch den Code gejagt und dann "gezeichnet". Nun zu meinem Problem. Wenn ich ein Bild mit einer Auflösung von 4131x3243 o.ä. habe, ist das Fenster dementsprechent groß, weil es der Bildgröße angepasst wird. Geändert habe ich es dann dahingehend, dass es der Bildschirmhöhe und -breite angepasst wird. Allerdings wird nicht das BILD verändert, sondern das GUI-FENSTER. Etwas ärgerlich, weil ich deswegen dann nur einen Ausschnitt habe. Hat jemand einen Tipp? Ich möchte nur halt nicht mein ganzes Programm umbauen müssen. Hier ein Codeteil: |
Die API wurde nicht aus Spass geschrieben ;):
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] getScaledInstance ist deine gesuchte methode |
Danke. Tut was sie soll . Allerdings "zieht" er das Bild, beziehungsweise drückt es ein, wenn du verstehst. Gibt es dafür auch eine Methode?
|
Wenn du meinst, dass das Bild verzerrt ist, hast du die neue Größe nicht richtig angeben.
|
Du könntest dir eine Funktion schreiben, die dafür sorgt, dass dein Bild richtig skalliert wird bzw. du die richtigen x und y-Werte für das Bild bekommst *fg*
Pseudocode: // rückgabewert (Array) ist der skalierte x und y wert, die dann für die Funktion getScaledInstance genutzt werden kann // input sind x und y des original Bildes public int[,] GetScalierteBildgroesse (int x, int y) { int [,] rueckgabewert = { x, y} // prüfe ob x die Bildlänge überschreitet if(rueckgabewert[0] > Fenstergröße_in_x-richtung) { // ermittel Scalierungsfaktor int faktor1 = rounde_auf(rueckgabewert[0] / Fenstergröße_in_x-richtung) rueckgabewert[0] = runde_ab(rueckgabewert[0] /faktor1) // x-wert rueckgabewert[1] = runde_ab(rueckgabewert[1] /faktor1) // y-wert } // prüfe ob y die Bildlänge überschreitet if(rueckgabewert[1] > Fenstergröße_in_y-richtung) { // ermittel Scalierungsfaktor int faktor2 = rounde_auf(rueckgabewert[1] / Fenstergröße_in_y-richtung) rueckgabewert[0] = runde_ab(rueckgabewert[0] /faktor2) // x-wert rueckgabewert[1] = runde_ab(rueckgabewert[1] /faktor2) // y-wert } return rueckgabewert } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.