Skalering af billede der skalerer efter billedets skala
Jeg har et problem med skalering af billeder i forbindelse med upload til server. Hvis billedet er større end 800x600 skaleres det til denne størrelse, men det ødelægger ofte størrelsesforholdet hvis billedets skalering i forvejen ikke er i forholdet 2:3. Jeg vil gerne hvis koden kan moddes så billedet skaleres efter de forhold den har, og ligger og ligger nærmest 800x600 størrelses mæssigt (kbyte).private static Bitmap Resize(Bitmap b, int MaxHeight, int MaxWidth)
{
int nWidth = b.Width;
int nHeight = b.Height;
if(nHeight>MaxHeight)
{
nWidth = (int)((((double)b.Width)/((double)b.Height))*((double)MaxHeight));
nHeight = MaxHeight;
}
if(nWidth>MaxWidth)
{
nWidth=MaxWidth;
nHeight = (int)((((double)b.Height)/((double)b.Width))*((double)MaxWidth));
}
Bitmap bTemp = (Bitmap)b.Clone();
b = new Bitmap(nWidth, nHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
double nXFactor = (double)bTemp.Width/(double)nWidth;
double nYFactor = (double)bTemp.Height/(double)nHeight;
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))));
return b;
}
