如何使用 c 锐化减小图像的大小

本文关键字:图像 何使用 锐化 | 更新日期: 2023-09-27 18:32:40

我想将图片大小减小到50 kb以下。

在这里,我给出了我在应用程序中使用的代码。

byte[] imageSize = new byte[FileUpload1.PostedFile.ContentLength];
HttpPostedFile uploadedImage = FileUpload1.PostedFile;
uploadedImage.InputStream.Read(imageSize(int)FileUpload1.PostedFile.ContentLength);
var fileLength1 = (FileUpload1.FileContent.Length.ToString());
byte[] ImageData = GenerateThumbnails(0.005, uploadedImage.InputStream);
private byte[] GenerateThumbnails(double scaleFactor, Stream sourcePath) {
  var image = System.Drawing.Image.FromStream(sourcePath);
  var newWidth = (int)(image.Width * scaleFactor);
  var newHeight = (int)(image.Height * scaleFactor);
  var thumbnailImg = new Bitmap(newWidth, newHeight);
  var thumbGraph = Graphics.FromImage(thumbnailImg);
  thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
  thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
  thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
  var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
  thumbGraph.DrawImage(image, imageRectangle);
  MemoryStream ms = new MemoryStream();
  image.Save(ms, ImageFormat.Jpeg);
  return ms.ToArray();    
}

在这里,该功能GenerateThumbnails减小了图片的实际大小,但它非常低。假设我上传大小为 800kb 的图像,该功能只会从 800kb 减少 40kb。影响网站性能的图像大小。

如何使用 c 锐化减小图像的大小

您也可以使用 缩略图方法...这似乎正是你想要的。(我没有测试压缩,但它肯定会理解图像)

Image FinalImage = Image.FromFile(@"yourPath").GetThumbnailImage(X, Y, () => false, IntPtr.Zero);

您也可以使用较低的InterpolationModeCompositingQualitySmoothingMode

降低图像的分辨率会导致生成小尺寸的图像,

在现有代码中将 scaleFactor 值<0.5。

var newWidth = (int)(image.Width * scaleFactor);
var newHeight = (int)(image.Height * scaleFactor);