在上传过程中,在网页中resize和优化图像的最佳类是什么?

我正在寻找一个类(用c#)检查我的图像大小(宽度和高度)(或图像大小以kb为单位),如果它们与我喜欢的尺寸不匹配,请调整它们的大小(意味着使用约束和相对宽度和高度新大小像在Photoshop中的图像大小=所以我们不会丢失图像外观)

这项工作有很多课程,但哪一个更好?

谢谢你的未来发展

这个部分似乎受到高度重视。

该问题的其他答案包括其他几个选项的链接,包括Imagemagick 。

当我指定所需的宽度时,这是我用于resize的方法:

private Image ResizeImage(Image original, int targetWidth) { double percent = (double)original.Width / targetWidth; int destWidth = (int)(original.Width / percent); int destHeight = (int)(original.Height / percent); Bitmap b = new Bitmap(destWidth, destHeight); Graphics g = Graphics.FromImage((Image)b); try { g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.SmoothingMode = SmoothingMode.HighQuality; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.CompositingQuality = CompositingQuality.HighQuality; g.DrawImage(original, 0, 0, destWidth, destHeight); } finally { g.Dispose(); } return (Image)b; } 
 public static class clsImageResize { public static int TnewWidth { get; set; } public static int TnewHeight { get; set; } public static string TfilePath { get; set; } public static void Resize(string filePath, int newWidth, int newHeight) { TfilePath = filePath; TnewWidth = newWidth; TnewHeight = newHeight; Bitmap image = new Bitmap(TfilePath); //Image m = Image.FromFile(TfilePath); Save(image, TnewWidth, TnewHeight, 8, TfilePath); } private static void Save(Bitmap image, int maxWidth, int maxHeight, int quality, string filePath) { // Get the image's original width and height int originalWidth = image.Width; int originalHeight = image.Height; // To preserve the aspect ratio float ratioX = (float)maxWidth / (float)originalWidth; float ratioY = (float)maxHeight / (float)originalHeight; float ratio = Math.Min(ratioX, ratioY); // New width and height based on aspect ratio int newWidth = (int)(originalWidth * ratio); int newHeight = (int)(originalHeight * ratio); // Convert other formats (including CMYK) to RGB. Bitmap newImage = new Bitmap(newWidth, newHeight, PixelFormat.Format24bppRgb); // Draws the image in the specified size with quality mode set to HighQuality using (Graphics graphics = Graphics.FromImage(newImage)) { graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.DrawImage(image, 0, 0, newWidth, newHeight); } // Get an ImageCodecInfo object that represents the JPEG codec. ImageCodecInfo imageCodecInfo = GetEncoderInfo(ImageFormat.Jpeg); // Create an Encoder object for the Quality parameter. Encoder encoder = Encoder.Quality; // Create an EncoderParameters object. EncoderParameters encoderParameters = new EncoderParameters(1); image.Dispose(); // Save the image as a JPEG file with quality level. EncoderParameter encoderParameter = new EncoderParameter(encoder, quality); encoderParameters.Param[0] = encoderParameter; newImage.Save(filePath, imageCodecInfo, encoderParameters); } private static ImageCodecInfo GetEncoderInfo(ImageFormat format) { return ImageCodecInfo.GetImageDecoders().SingleOrDefault(c => c.FormatID == format.Guid); } }