Ik heb de volgende code geschreven om on the fly bitmaps te resizen. Het werkt prima maar ik zie telkens een terugkerende fout in de geresizede afbeelding die het script uitspuugt: Een dunne border rond de randen van de afbeelding.
In een hoekje van het internet had ik gevonden dat de interpolation van .NET niet helemaal jofel is en pixels langs de randen gaat interpoleren met pixels buiten de bitmap; pixels die dus niet bestaan waardoor de border altijd donkerder wordt.
Voorbeeld van een geresizede JPG (In het origineel zit die lichte grijze border dus niet):

Sample van mijn code:
De InterpolationMode veranderen naar NearestNeighbour helpt natuurlijk wel tegen de border maar geeft zoals je verwacht een zeer brakke kwaliteit.
Iemand een idee?
In een hoekje van het internet had ik gevonden dat de interpolation van .NET niet helemaal jofel is en pixels langs de randen gaat interpoleren met pixels buiten de bitmap; pixels die dus niet bestaan waardoor de border altijd donkerder wordt.
Voorbeeld van een geresizede JPG (In het origineel zit die lichte grijze border dus niet):
Sample van mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
| System.Drawing.Image oImg = System.Drawing.Image.FromFile(sFullJpgPath);
System.Drawing.Image oThumbNail = new Bitmap(iWidth, iHeight, oImg.PixelFormat);
Rectangle oRectangle = new Rectangle(0, 0, iWidth, iHeight);
Graphics oGraphic = Graphics.FromImage(oThumbNail);
oGraphic.CompositingQuality = CompositingQuality.HighQuality;
oGraphic.SmoothingMode = SmoothingMode.HighQuality;
oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
oGraphic.DrawImage(oImg, oRectangle); |
De InterpolationMode veranderen naar NearestNeighbour helpt natuurlijk wel tegen de border maar geeft zoals je verwacht een zeer brakke kwaliteit.
Iemand een idee?