30. juli 2002 - 19:36Der er
5 kommentarer og 1 løsning
Scaling af billede
Kan det lade sig gøre at ned-/op-scale et billede til en bestemt bredde og stadig have de samme størrelsesforhold mellem højde og bredde. Hvis ja, hvordan? -Sion
Selvfølgelig. Jeg har fået til opgave at lave et program hvor man skal kunne trække et billede ind i programmet, hvorefter programmet skal lave en kopi af billedet, bare hvor fx bredden er 100px, men forholdet mellem breden og længden skal være det samme. Fx man dragger et 400x100 billede ind i programmet, hvorefter der bliver lavet en kopi, bare med 100x25. Så det skal bare scaleres ned. Billederne skal bruges til webbrug. -Sion
Hej. Jeg har gjort det tidligere ved at beregne den faktor som billedet skal nedskaleres med i bredden (højden) til at nedskalere med i højden (bredden). - Først testede jeg om billedet var enten bredere eller højere end det tilladte (f.eks. dine 100x25). Hvis dette IKKE var tilfældet, brugte jeg blot billedet som det var (for ikke at ende op med en dårligere opløsning og dermed dårligere resultat). - Hvis billedet var enten bredere og/eller højere, testede jeg på hvor stor højdefaktoren kontra breddefaktoren var. Dette gjorde jeg ved blot at dividere originalbilledets bredde og højde med målbilledets bredde og højde. Den faktor som var størst var den bestemmende faktor for hvor meget originalbilledets både bredde og højde skulle divideres med. - Hvis billedet var f.eks. 2 gange højere men kun 1,5 gange bredere end målbilledet, skulle jeg dividere det originale billedes højde OG bredde med 2. - Hvis billedet derimod var f.eks. 3 gange BREDERE men kun 1,2 gange HØJERE end målbilledet, skulle jeg dividere det originale billedes højde og bredde med 3. - Ved at skalere både højde og bredde ned som ovenstående beskrevet bevares bredde/højde skaleringen. Jeg anvendte en database i baggrunden, og herved kunne jeg gemme skaleringen for hvert enkelt billede i databasen således at hvis jeg kiggede på et bestemt billede, ville den specifikke skalering blive fundet og billedet tilrettet med det samme jeg kaldte billedet frem.
itbjarne -> Jo, det er da meget godt alt sammen, men jeg kan bare ikke bruge det til så meget. Tak for svaret alligevel. Billedet skal, som sagt, bruges til webbrug og kan derfor ikke skaleres i "runtime". Derfor søger jeg efter den konkrete kode til at skalere billedet i de rette propationer... -Sion
Hej Sion. Jeg tror jeg har løsningen på dit problem. Jeg har ikke lige tid til at lave noget stort ud af det nu, men vender gerne tilbage. Dog kan jeg sige, at du skal bruge 2 pictureboxes. source1 og dest1
Function Thumbnail(ByVal Width As Integer, ByVal Height As Integer, source1 As PictureBox, dest1 As PictureBox) As Picture 'Very simple, uses the PaintPicture method and is a lot faster. 'First we must set the ScaleModes of the forms and picture boxes.
source1.Parent.ScaleMode = vbPixels dest1.Parent.ScaleMode = vbPixels source1.ScaleMode = vbPixels dest1.ScaleMode = vbPixels 'Set the ScaleWidth and ScaleHeight of the destination control.
dest1.Height = Height dest1.Width = Width dest1.ScaleHeight = Height dest1.ScaleWidth = Width dest1.PaintPicture source1.Picture, 0, 0, Width, Height Set Thumbnail = dest1.Image 'Picture1.Picture = dest1.Image End Function
Anyway, det er selve den function der laver din thumbnail, eller resizer dit billede. Vend tilbage, hvis du vil have yderligere hjælp.
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.