myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] Bild Größe anpassen/ändern (https://mygully.com/showthread.php?t=2677550)

JxpHiL 10.08.12 20:19

[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:


Melfis 11.08.12 22:13

Die API wurde nicht aus Spass geschrieben ;):
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
getScaledInstance ist deine gesuchte methode

JxpHiL 12.08.12 19:24

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?

germgerm 13.08.12 06:38

Wenn du meinst, dass das Bild verzerrt ist, hast du die neue Größe nicht richtig angeben.

saibot521_2 13.08.12 18:44

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.