Jag använder mig av aspupload och aspjpeg för att ladda upp en bild och skapa en kopia som sen blir en thumbnail. Detta fungerar fint, men jag skulle vilja ha samma storlek på thumbnailsen oavsett format på bilden.
Som jag har det nu så har jag gjort så att den max kan vara 90px hög och max 120px bred och det funkar bra, men problemet är om jag laddar upp en bild som är otroligt smal men hög så blir den 90px hög och på bredden blir den runt 65px.
Jag skulle alltså vilja att thumbnailen ska bli 120x90 oavsett formatet innan, men jag vill också att den ska bibehålla proportionerna, så om jag hårdkodar length till 120 och height till 90 så blir thumbnailen ihoptryckt eller utdragen.
Lösningen är då istället att ASPJPEG på nåt sätt kan beskära bilden så den blir 90x120 men bibehåller proportionerna. En avlång bild skulle alltså då beskäras på mitten typ och thumbnailen skulle bara kanske bara bestå av halva bilden för att bibehålla proportionerna.
Nån som vet hur man gör detta med ASPJPEG? Det verkar finnas en funktion som heter crop, men hittar inte så mycket information om den i dokumentationen.
' Crop 20 pixels from left, 30 from top.
' Make image size 60 by 40.
Jpeg.Crop 20, 30, 80, 70
Detta är ju okej om man vet exakt hur stor bilden är, men storleken på bilden jag laddar upp varierar ju.
Jag vill att den ska läsa av bildstorleken sen croppa så den blir 120x90 varje gång.
Resiza bilden först, sen croppar du bilden till önskad storlek.
Du kan hela tiden laborera med Jpeg.Width eller Jpeg.Height för att kolla storleken och räkna ut hur mycket du behöver croppa eller om du över huvud taget ska croppa...
' Create instance of AspJpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
' Open source image
Jpeg.Open "c:\path\myimage.jpg"
H = Jpeg.OriginalHeight
W = Jpeg.OriginalWidth
Sedan kan du använda dessa variabler som du vill.
Det finns (tror jag) inga färdiga funktioner som gör exakt det du vill men det finns ju bra verktyg i överflöd som du med lite micklande kan bygga egna funktioner av.
jpeg.PreserveAspectRatio = True
L = 90
W = 120
If Jpeg.OriginalWidth > Jpeg.OriginalHeight Then
Jpeg.Height = L
Else
Jpeg.Width = W
End If
xCropWidth = 120
xCropHeight = 90
xOffset = int((Jpeg.Width-xCropWidth)/2)
yOffset = int((Jpeg.Height-xCropHeight)/2)
Jpeg.Crop xOffset, yOffset, Jpeg.Width-xOffset, Jpeg.Height-yOffset
Dock blev bilden i vissa enstaka fall 121 pixlar bred eftersom den rundar uppåt.
Vet inte riktigt hur jag ska få den att inte runda till 121 när den är 120,5, 120,6, 120,7, 120,8, 120,9 pixlar bred.