namespace MPAConsult.ToolBox.Web { /// <summary> /// Summary description for ImageUtil. /// </summary> public class ImageUtil { public static Bitmap Resize(Bitmap b, int nWidth, int nHeight, bool bBilinear) { Bitmap bTemp = (Bitmap)b.Clone(); b = new Bitmap(nWidth, nHeight, bTemp.PixelFormat);
if (bBilinear) { double fraction_x, fraction_y, one_minus_x, one_minus_y; int ceil_x, ceil_y, floor_x, floor_y; Color c1 = new Color(); Color c2 = new Color(); Color c3 = new Color(); Color c4 = new Color(); byte red, green, blue;
byte b1, b2;
for (int x = 0; x < b.Width; ++x) for (int y = 0; y < b.Height; ++y) { // Setup
red = (byte)(one_minus_y * (double)(b1) + fraction_y * (double)(b2));
b.SetPixel(x,y, System.Drawing.Color.FromArgb(255, red, green, blue)); } } else { for (int x = 0; x < b.Width; ++x) for (int y = 0; y < b.Height; ++y) b.SetPixel(x, y, bTemp.GetPixel((int)(Math.Floor(x * nXFactor)),(int)(Math.Floor(y * nYFactor)))); }
ved nærmere eftersyn så er koden i bund og grund den samme som cyberfessor (altså nearest-neighbour-resampling metoden).
Der er dog en fejl i Cyberfessors kode så vidt jeg kan se. Parser du et ikke-24bit billede til funktionen, fejler den da Bitmap.SetPixel kun virker på 24bit billeder.
jo... i teorien.. i praksis er det dog ikke til at vide helt hvornår at billedet bliver frigivet på grund af .Net's Garbage Collection... det er noget med at du kan tvinge GC'en til at collecte med det samme ved hjælp af Collect-metoden:
Så blev jeg det kloger, nu virker det som det skal!
Tusind tak for hjælpen :-)
Synes godt om
Ny brugerNybegynder
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.