Avatar billede Slettet bruger
15. august 2006 - 21:05 Der er 9 kommentarer og
1 løsning

Beregne ny højde og bredde på billede

Jeg bruger denne kode til at beregne den nye højde og/eller bredde på et billede:

width = Image.Width
height = Image.height

maxwidth = 200
maxheight = 150

If width > maxwidth Then
width = maxwidth
height = Int(height*maxwidth/width)
End If

If height > maxheight Then
width = Int(width*maxheight/height)
height = maxheight
End If

Response.Write width & "px bred"
Response.Write height & "px høj"

De fleste billeder ser også godt nok ud (billeder der er højere end de er bredde), men nogle af dem bliver trykket lidt sammen i bredden så det ser forkert ud (omkring 10-20px) og hvis billederne er under begge max størrelser så bliver målene byttet om så højden bliver til bredden og modsat.

Hvad er der lige galt i denne formel?
Avatar billede nielle Nybegynder
15. august 2006 - 21:14 #1
width = Image.Width
height = Image.height

maxwidth = 200
maxheight = 150

If width > maxwidth Then
    Faktor = maxwidth/width
End If

If height > maxheight Then
    Faktor2 = maxheight/height
    If Faktor2 < Faktor Then Faktor = Faktor2
End If

width = Faktor*width
height = Fakto*height

Response.Write width & "px bred"
Response.Write height & "px høj"
Avatar billede nielle Nybegynder
15. august 2006 - 21:15 #2
Beregn faktoren først, find den der passer til både bredde og højde, og gang så med den.
Avatar billede Slettet bruger
15. august 2006 - 21:21 #3
Det hjalp på nogle billeder men andre blev det værre. Nogle billeder har nu størrelsen 0x0.
Og nogle bliver gjort mindre end nødvendigt, altså under max mål på begge sider.

Jeg har desuden funet ud af at den komponent jeg bruger ikke er helt optimal, den bytter op på højde og bredde når det er gif billeder.
Avatar billede nielle Nybegynder
15. august 2006 - 21:24 #4
Ok, prøv så at regne med flydende tal det meste af vejen:

width = Image.Width
height = Image.height

maxwidth = 200.0
maxheight = 150.0

If width > maxwidth Then
    Faktor = maxwidth/width
End If

If height > maxheight Then
    Faktor2 = maxheight/height
    If Faktor2 < Faktor Then Faktor = Faktor2
End If

width = Int(Faktor*width)
height = Int(Faktor*height)

Response.Write width & "px bred"
Response.Write height & "px høj"
Avatar billede Slettet bruger
15. august 2006 - 21:28 #5
Det er 100% det samme som første kode.

Tror du det kan være fordi min komponent ikke helt de rigtige tal? Den bytter jo om på højde og bredde når det er gif-billeder.
Avatar billede nielle Nybegynder
15. august 2006 - 21:33 #6
Lad os lige slippe af med mine fejl først:

width = Image.Width
height = Image.height

maxwidth = 200.0
maxheight = 150.0

Faktor = 1.0

If width > maxwidth Then
    Faktor2 = maxwidth/width
    If Faktor2 < Faktor Then Faktor = Faktor2
End If

If height > maxheight Then
    Faktor2 = maxheight/height
    If Faktor2 < Faktor Then Faktor = Faktor2
End If

width = Int(Faktor*width)
height = Int(Faktor*height)

Response.Write width & "px bred"
Response.Write height & "px høj"
Avatar billede Slettet bruger
15. august 2006 - 22:10 #7
Ja, nu virker det vist...

Har du nogle forslag til problemet med GIF-billeder? Kan man lave noget ala det her:

If GIF-billede = true Then
width = Image.height
height = Image.Width
Else
width = Image.Width
height = Image.height
End If
Avatar billede nielle Nybegynder
15. august 2006 - 22:13 #8
Jeg har ikke nogle specielt vise råd mht. gif-billdeder, men det du skitsere der, ser da rimeligt fornuftigt ud. :^)
Avatar billede Slettet bruger
15. august 2006 - 22:24 #9
Jeg har lavet koden nu og den ser ud til at virke.
Det er vel godt nok at lave den som jeg har gjort her!?

Men uanset hvad så skal du jo have point, så læg et svar så sender jeg da straks point og siger mange TAK for hjælpen :)

If Right(rsGallery("gFilename"), 3) = "gif" Then
width = Image.height
height = Image.Width
Else
width = Image.Width
height = Image.height
End If
Avatar billede nielle Nybegynder
15. august 2006 - 22:29 #10
Du bør nok også lige konvertere til små bogstaver - sådan at den kan klare det hvis de hedder xxx.GIF. Desuden foretrækker jeg nog selv at tage punktummet med:

If Right(LCase(rsGallery("gFilename")), 4) = ".gif" Then
    width = Image.height
    height = Image.Width
Else
    width = Image.Width
    height = Image.height
End If


... og et svar :^)
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