Jag kör så här och det funkar:
objImage.Resample Cint(iNewXSize),Cint(iNewYSize)
objImage.Quality=80
objImage.Sharpen
objImage.SaveFile(psNewFile)
9 svar · 339 visningar · startad av Eclipse
I exemplet står det:
oSmartImage.Resample oSmartImage.OriginalWidth / 2,0
men jag vill inte dela med två, jag vill att bilden ska vara 150 pixlar bred oavsett originalstorleken.
Jag testande
oSmartImage.Resample 150
samt lite varianter men det fungerade givetvis inte...
"it's easy when you know how" - Spocke
Jag kör så här och det funkar:
objImage.Resample Cint(iNewXSize),Cint(iNewYSize)
objImage.Quality=80
objImage.Sharpen
objImage.SaveFile(psNewFile)
OK... ja, det fungerar men det var inte riktigt så jag menade!
I ditt fall förutsätts att alla bilder har samma proportioner. Jag vill att bilden blir 150 pixlar bred och sen höjden blir vad den blir, proportionellt.
1. Exemplet från boken:
oSmartImage.Resample oSmartImage.OriginalWidth / 2,0
2. Min variant: = procentuellt...
newWidht = 150 / oSmartImage.OriginalWidth
oSmartImage.Resample oSmartImage.OriginalWidth / newWidht
Man kanske kan prova något sånt här:
intNewWidth = 150
intNewHeight = Cint(intNewWidth/oSmartImage.OriginalWidth) * oSmartImage.OriginalHeight
oSmartImage.Resample intNewWidth, intNewHeight
Kanske?
Nej, jag hajjar nada!
Med din kod blir värdena 150, 0 och det fungerar inte.
intNewHeight = (intNewWidth/oSmartImage.OriginalWidth) * oSmartImage.OriginalHeight
oSmartImage.Resample intNewWidth, Cint(intNewHeight)
Om man skriver så här blir värdena 150, 67 och det fungerar fortfarande inte...
Om jag startar om min dator kanske det fungerar bättre? Eller tar en symbolisk rökpaus....??
Så här gör jag:
height = oSmartImg.OriginalWidth / 150
oSmartImg.Resample 150, oSmartImg.Originalheight / height
Du delar originalwidth med din tänkta width och får på så sätt
multipeln som höjden skall delas med.
Detta medför dock att bilden kommer förstoras om bredden är mindre än 150, men det torde kunna lösas med en enkel if-sats om man så önskar.
För att bibehålla proportionen på höjden använder jag följande kod och det fungerar klockrent:
[red]Dim oImg
Set oImg = Server.CreateObject("aspSmartImage.SmartImage")
oImg.OpenFile("myImage.jpg")
oImg.Resample 150,0
oImg.Quality = 100
oImg.SaveFile("myImage.jpg")
Set oImg = Nothing[/red]