Alt om programmering som jeg selv finner interessant. No more, no less. Trolig vil det være mest om webprogrammering, .NET og andre ting jeg jobber med fast.

tirsdag, juli 18, 2006

Regne ut ny høyde og bredde for miniatyrbilder

Et miniatyrbilde kan genereres fra eksisterende størrelse til en fraksjon, f.eks. en halv ved å dele høyde og bredde på 2. Enkelt. Men hva hvis du har et maksimalt høyde-/breddeforhold å ta hensyn til?

Disse formlene løser problemet greit:

Ny bredde beregnes slik:
ny bredde = bredde * ny høyde / eksisterende høyde

Ny høyde beregnes slik:
ny høyde = høyde * ny bredde / eksisterende bredde

Formlene kan også kombineres for å sørge for at et miniatyrbildet har både en maksbredde og en makshøyde.

I kodeeksemplet nedenfor er maks bredde og høyde 200 piksler. Ny størrelse vil beregnes (til 200 X 150) fra original størrelse (400 X 300).

Dim hoydeEksisterendeBilde As Integer = 400
Dim breddeEksisterendeBilde As Integer = 300
Dim maksBredde As Integer = 200
Dim maksHoyde As Integer = 200

Dim nyBredde As Integer = maksBredde
Dim nyHoyde As Integer = hoydeEksisterendeBilde * nyBredde / breddeEksisterendeBilde
If nyHoyde > maksHoyde Then
nyHoyde = maksHoyde
' beregn bredde siden bildet var for høyt
nyBredde = breddeEksisterendeBilde * nyHoyde / hoydeEksisterendeBilde
End If


Oppdatering
Jeg har siden funnet et eksempel på det samme i "Personal Web Site Starter Kit" som følger med VS 2005. Prosjektet kan også lastes ned fra http://www.asp.net/downloads/starterkits/default.aspx?tabid=62.

Ingen kommentarer:

Om meg

Bildet mitt
I love music. And computers. And Dostoevsky, too.