Avatar billede peterlang Nybegynder
21. september 2006 - 15:53 Der er 4 kommentarer og
2 løsninger

Resize foto + bestemt masse

Jeg skal lave en funktion til at resize et foto, så det ender med at have en bestemt masse + skal selvfølgelig beholde sine probationer

Feks.
jeg vil gerne have at alle billeder ender med en masse på 8000
Jeg scanner et foto (10000 * 8000)
Hvis jeg resizer dette billede til 100 * 80 ender jeg med en masse på 8000 (100 * 80 = 8000)

Men hvad nu hvis denne billede var 12500*7600, hvordan laver jeg en en funktion der kan udregne en ny højde + brede som ender med en masse på 8000  (samme probationer)


Dim nyhoj as Integer
Dim nybred as Integer

Call SammeMasse(12500, 7600, 8000)

Private Sub SammeMasse(bred As Integer, hoj As Integer, masse As Integer)

nyhoj=x
nybred=x

End Sub


Jeg kan simpelthen ikke regne det ud?

Håber der er en der er god til matematik

Peter
Avatar billede mapoulsen Nybegynder
21. september 2006 - 16:29 #1
Hej Peter

Jeg er ikke noget matematisk geni men jeg har fundet en løsning til dig. Det kan godt være det kan gøres smartere, men det virker.

Ny højde = ( højde / bredde ) * kvadratroden af 8000
Ny bredde = ( bredde / højde) * kvadratroden af 8000
Avatar billede mapoulsen Nybegynder
21. september 2006 - 16:30 #2
Eij, det var forkert. Ignorer mit indlæg.
Avatar billede mapoulsen Nybegynder
21. september 2006 - 16:39 #3
sum = højde * bredde
kvsum = kvadratroden af summen
sumNy = 8000
kvsumNy = kvdratrod(sumNy)

Ny højde = ( højde / sum ) * kvsum * kvsumNy
Ny bredde = ( bredde / sum ) * kvsum * kvsumNy

Dét skulle virke.

Eksempelvis giver 12500*7600 -> 114,71 * 69,74
Avatar billede peterlang Nybegynder
21. september 2006 - 17:03 #4
Mange tak fordi du giver at bruge lidt tid på at løse denne opgave.

Jeg har prøvet at lave funktionen udfra det du har skrivet, men jeg kan stadig ikke få det til at virke!!!

Call SammeMasse(12500, 7600)

Private Sub SammeMasse(xbred As Double, xhoj As Double)

Dim sum1 As Double: sum1 = xbred * xhoj
Dim kvsum1 As Double: kvsum1 = sum1 ^ 0.5 ^ 0.5
Dim sum2 As Double: sum2 = 8000
Dim kvsum2 As Double: kvsum2 = sum2 ^ 0.5 ^ 0.5

X1 = (xhoj / sum1) * kvsum1 * kvsum2
X2 = (xbred / sum1) * kvsum1 * kvsum2

MsgBox Int(X1) & " - " & Int(X2)

End Sub
Avatar billede peterlang Nybegynder
21. september 2006 - 17:19 #5
Perfekt... det virker

skulle bruge -> Sqr(sum2)
Jeg har selv brugt over 1 time, uden at kunne løse problemet.

Mange tak for hjælpen
Avatar billede mapoulsen Nybegynder
21. september 2006 - 17:26 #6
Det var så lidt. Det glæder mig at kunne være til hjælp.

Fortsat held og lykke med projektet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester