Avatar billede sion Nybegynder
30. juli 2002 - 19:36 Der 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
Avatar billede kantoraza Nybegynder
30. juli 2002 - 20:46 #1
Kan du uddybe det?
Avatar billede sion Nybegynder
30. juli 2002 - 21:00 #2
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
Avatar billede itbjarne Nybegynder
30. juli 2002 - 23:36 #3
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.
Avatar billede sion Nybegynder
30. juli 2002 - 23:58 #4
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
Avatar billede mikker Nybegynder
31. juli 2002 - 13:28 #5
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.

- Mikker
Avatar billede mikker Nybegynder
02. august 2002 - 21:20 #6
Takker :-)
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