Für proportionale Bildbearbeitung: int zu double und wieder zurück

Hallo!

Ich habe ein Script zum Hochladen, bearbeiten [Dimensionen, nichts anderes] und Speichern von Bildern.

Zur zeit arbeitet das Script so, das ich vorgegebene Werte habe, d.h. ein Bild in landscape Modus bekommt die Werte 450 und 338, im Potrait 338 und 450. Alles schön und gut - funktioniert seit einem Jahr einwandfrei.

Jetzt allerdings möchte ich, das das Bild dynamisch bearbeitet wird - d.h. ich auch mal beschnittene Fotos hochladen kann, ohne das die dann in den Standarddimensionen 450/338 oder 338/450 dann verzehrt werden.

Im Grund muss ich also das Verhältniss zwischen Bildbreite und Höhe herausbekommen. Je nachdem, ob das Bild dann breiter als hoch ist oder höher als breit, muss ich dann einfach einen Maximalwert [450] durch das Bildverhältniss teilen, und dann die beiden Werte den entsprechenden Bilddaten zuordnen. In der Theorie ganz einfach.

Jetzt kommt aber mein Problem:
Die Bilddaten werden alle als Integer erfaßt - was keine Kommazahlen zuläßt. Von normalen Photos ist der Ratio aber bei ca 1.33. Was ich also machen muss, ist, die 450 durch den Ratio zu teilen, und die dabei entstehende Zahl wieder auf eine normale Integerzahl zu runden, sodass ich am Ende wieder mit einem Integerwert arbeite.

[BSP: 450 / 1.33 = 338,34586
Am Ende brauch ich die 338 als Integer].

Vorraussetzungen:

int genwidth - zum Beispiel 1024
int genheight - zum Beispiel 768
float genratio [kann meinetwegen auch double oder was auch immer sein]

genratio = genwidth / genratio

dimension_big = 450
dimension_small = 450 / genratio

Ziel:
Integerwert von dimension_big - im Beispiel 450
Integerwert von dimension_small - im Beispiel 338


Ich brauch die Lösung asap.
 
Nein, die Berechnung hab ich nicht. Ich weiß, was ich berechnen muss, ich weiß, wie ichs berechnen muss, aber ich weiß nicht wie ichs in C# ausdrücke.

Ich habe die Integerwerte für die Höhe und die Breite des Hochgeladenen Bildes.

Was ich jetzt machen muss, aber nicht weiß wie ichs programmiere, ist, das ich das Verhältniss zwischen der Höhe und der Breite herausfinde.

Dann nehme ich eine Maximalzahl - größer als diese Zahl darf das Bild nicht in der Höhe und in der Breite sein - beispielsweise 450. Und jetzt muss ich nur noch den dazugehörigen anderen Wert bekommen. Ist das Originalbild also 1024 * 768, dann ist das Verhältniss dazwischen 1.33.
Der Maximalwert für mein neues Bild ist also 450 - für die Breite, und, da das Bild 1.33 mal breiter als hoch war: 450 / 1.33 = 338.

Wie bekomme ich die Berechnung hin, das ich von den beiden Ausgangswerten das Verhältniss bekommen, und basierend darauf eine neue Integerzahl bekommen?
 
Meinst Du dieses Convert.ToInt32 ?

Das hab ich schon probiert - aber das funktioniert nicht, so wie ichs will. Ich bekomme als neuen Wert den gleichen wie den Ausgangswert.
 
Ok, vorschnell geantwortet. convert.ToDouble und convert.ToInt32 korrekt eingesetzt und promt funktioniert es - meine Bilder werden proportional verkleinert/größert und gespeichert.

Problem gelöst.
 
Zurück