Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để thay đổi kích thước hình ảnh C #?

Một bitmap bao gồm dữ liệu pixel cho hình ảnh đồ họa và các thuộc tính của nó. Có nhiều định dạng tiêu chuẩn để lưu bitmap vào một tệp. GDI + hỗ trợ các định dạng tệp sau:BMP, GIF, EXIF, JPG, PNG và TIFF. Bạn có thể tạo hình ảnh từ tệp, luồng và các nguồn khác bằng cách sử dụng một trong các trình tạo Bitmap và lưu chúng vào luồng hoặc vào hệ thống tệp bằng phương pháp Lưu.

Trong mã dưới đây CompressAndSaveImageAsync Phương thức Nén hình ảnh và lưu trong đường dẫn được đề cập.

Tên hình ảnh mới sẽ là sự kết hợp của userId trên máy tính để bàn và dateTime

Ví dụ

private async Task<string> CompressAndSaveImageAsync(Bitmap inputImage, int quality=50){
   string imageSavedPath = string.Empty;
   try{
      var jpgEncoder = await GetEncoderAsync(ImageFormat.Jpeg);
      var imageEncoder = Encoder.Quality;
      var imageEncoderParameters = new EncoderParameters(1);
      var imageEncoderParameter = new EncoderParameter(imageEncoder, quality);
      imageEncoderParameters.Param[0] = imageEncoderParameter;
      var userId = Regex.Replace(WindowsIdentity.GetCurrent().Name, @"[^0−9a−zA−Z]+", "_");
      var currentDateTime = Regex.Replace(DateTimeOffset.Now.ToString().Split('+')[0].Trim(), @"   [^0−9a−zA−Z]+", "_");
      var imageName = $"{userId}_{currentDateTime}.jpg";
      imageSavedPath = "C:\Users\K\Desktop\Questions\Images";
      inputImage.Save(imageSavedPath, jpgEncoder, imageEncoderParameters);
      inputImage.Dispose();
   }
   catch (Exception ex){
      throw
   }
   return imageSavedPath;
}
private async Task<ImageCodecInfo> GetEncoderAsync(ImageFormat format){
   ImageCodecInfo imageCodecInfo = null;
   try{
      var codecs = ImageCodecInfo.GetImageDecoders();
      foreach (var codec in codecs){
         if (codec.FormatID == format.Guid){
            imageCodecInfo = codec;
         }
      }
   }
   catch (Exception ex){
      throw
   }
   return imageCodecInfo;
}