बिटमैप में ग्राफिक्स छवि और उसकी विशेषताओं के लिए पिक्सेल डेटा होता है। बिटमैप को फ़ाइल में सहेजने के लिए कई मानक प्रारूप हैं। GDI+ निम्न फ़ाइल स्वरूपों का समर्थन करता है:BMP, GIF, EXIF, JPG, PNG और TIFF। आप किसी एक बिटमैप कंस्ट्रक्टर का उपयोग करके फ़ाइल, स्ट्रीम और अन्य स्रोतों से चित्र बना सकते हैं और उन्हें स्ट्रीम या फ़ाइल सिस्टम में सेव विधि से सहेज सकते हैं।
नीचे दिए गए कोड में CompressAndSaveImageAsync विधि छवियों को संपीड़ित करती है और बताए गए पथ में सहेजती है।
नया छवि नाम डेस्कटॉप उपयोगकर्ता आईडी और दिनांक समय का संयोजन होगा
उदाहरण
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; }