Voor een programma'tje ben ik een onderdeel aan het schrijven, waarin een plaatje wordt ingeladen, waar vervolgens een tumbnail van wordt weergegeven.
Op zich lukt me dit allemaal, op het volgende na:
Wanneer ik een plaatje verklein, wordt de kwaliteit... bagger.
Weet iemand wat ik fout doe, want als je bijvoorbeeld kijkt bij explorer van windows, die laat ook een tumbnail zien, die wel van zeer goeie kwaliteit is.
Ik heb mijn code hieronder geplaatst: (alleen het nodige uit de functie)
De plaatjes die ik met deze functie krijg, zie er gewoon slecht uit. Niet scherp, enkele vlekken erin, en strepen erdoor heen... Wat kan ik hieraan doen, of weet een van jullie een andere methode om plaatjes te verkleinen?
(Het resultaat moet uiteindelijk in een gif of jpeg formaat op hd komen).
Ik heb op i'net al een hoop gezocht, maar kom eigenlijk alleen strechtblt tegen om te resizen....
Op zich lukt me dit allemaal, op het volgende na:
Wanneer ik een plaatje verklein, wordt de kwaliteit... bagger.
Weet iemand wat ik fout doe, want als je bijvoorbeeld kijkt bij explorer van windows, die laat ook een tumbnail zien, die wel van zeer goeie kwaliteit is.
Ik heb mijn code hieronder geplaatst: (alleen het nodige uit de functie)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| Public Function CreateImage(lngWidth as Long, lngHeight as Long, _ strSourceFile as String, strDestinationFile as String) As Integer Dim stdPic1 As StdPicture Set stdPic1 = LoadPicture(strSourceFile) lngDC = CreateCompatibleDC(GetDC(&H0)) lngOld = SelectObject(lngDC, stdPic1.Handle) With frmPicture.picPicture .Height = lngHeight .Width = lngWidth .Refresh DoEvents End With lngResult = StretchBlt(frmPicture.picPicture.hdc, 0, 0, lngWidth \ Screen.TwipsPerPixelX, _ lngHeight \ Screen.TwipsPerPixelY, lngDC, 0, 0, _ frmPicture.ScaleX(stdPic1.Width, vbHimetric, vbPixels), _ frmPicture.ScaleY(stdPic1.Height, vbHimetric, vbPixels), vbSrcCopy) If lngResult = 0 Then CreateImage = 4 GoTo ExitCode End If With frmPicture.picPicture .Refresh Kill strDestinationFile objBitmap.SavePicture .Image, strDestinationFile End With SelectObject lngDC, lngOld DeleteDC lngDC Set stdPic1 = Nothing End Function |
De plaatjes die ik met deze functie krijg, zie er gewoon slecht uit. Niet scherp, enkele vlekken erin, en strepen erdoor heen... Wat kan ik hieraan doen, of weet een van jullie een andere methode om plaatjes te verkleinen?
(Het resultaat moet uiteindelijk in een gif of jpeg formaat op hd komen).
Ik heb op i'net al een hoop gezocht, maar kom eigenlijk alleen strechtblt tegen om te resizen....