此方法为网上抄袭而来,并非本人原创。 public static void ResizeImageFile( string pathFilename, byte [] imageFile, int targetSize) ... { using (System.Drawing.Image oldImage = System.Drawing.Image.FromStream(new MemoryStream(imageFile))) ...{ Size newSize = CalculateDimensions(oldImage.Size, targetSize); using (Bitmap newImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb)) ...{ using (Graphics canvas = Graphics.FromImage(newImage)) ...{ canvas.SmoothingMode = SmoothingMode.AntiAlias; canvas.InterpolationMode = InterpolationMode.HighQualityBicubic; canvas.PixelOffsetMode = PixelOffsetMode.HighQuality; canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize)); if (newSize.Width >= 400) ...{ canvas.TextRenderingHint = TextRenderingHint.AntiAlias; string imageCopyright = ConfigurationManager.AppSettings["ImageCopyright"].ToString(); Font font = new Font("Verdana", 10); SolidBrush solidBrushBlack = new SolidBrush(Color.Black); SolidBrush solidBrushWhite = new SolidBrush(Color.White); //左上角 canvas.DrawString(imageCopyright, font, solidBrushBlack, 5, 5); canvas.DrawString(imageCopyright, font, solidBrushWhite, 6, 6); //右下角 SizeF sizeF = new SizeF(); sizeF = canvas.MeasureString(imageCopyright, font); canvas.DrawString(imageCopyright, font, solidBrushWhite, newSize.Width - sizeF.Width - 5, newSize.Height - sizeF.Height); canvas.DrawString(imageCopyright, font, solidBrushBlack, newSize.Width - sizeF.Width - 6, newSize.Height - sizeF.Height); } newImage.Save(pathFilename, ImageFormat.Jpeg); } } } } private static Size CalculateDimensions(Size oldSize, int targetSize) ... { Size newSize = new Size(); if (oldSize.Height > oldSize.Width) ...{ if (oldSize.Height < targetSize) ...{ newSize.Width = oldSize.Width; newSize.Height = oldSize.Height; } else ...{ newSize.Width = (int)(oldSize.Width * ((float)targetSize / (float)oldSize.Height) * 0.75); newSize.Height = (int)(targetSize * 0.75); } } else ...{ if (oldSize.Width < targetSize) ...{ newSize.Width = oldSize.Width; newSize.Height = oldSize.Height; } else ...{ newSize.Width = targetSize; newSize.Height = (int)(oldSize.Height * ((float)targetSize / (float)oldSize.Width)); } } return newSize; }