কম্পিউটার টিউটোরিয়াল

C#-এ ইমেজ রিসাইজ/কমপ্রেস করা

বিটম্যাপ (Bitmap) একটি গ্রাফিক্স ইমেজের পিক্সেল ডেটা এবং অ্যাট্রিবিউট ধারণ করে। স্ট্যান্ডার্ড ফরম্যাট: BMP, GIF, EXIF, JPG, PNG, TIFF। GDI+ এই সব সাপোর্ট করে। Bitmap কনস্ট্রাক্টর দিয়ে ফাইল, স্ট্রিম থেকে ইমেজ তৈরি করা যায় এবং Save মেথড দিয়ে সেভ করা যায়।

নিচের 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\" + imageName;
        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(); // ভুল: GetImageEncoders() হওয়া উচিত
        foreach (var codec in codecs)
        {
            if (codec.FormatID == format.Guid)
                imageCodecInfo = codec;
        }
    }
    catch (Exception ex) { throw; }
    return imageCodecInfo;
}

সংশোধন: ImageCodecInfo.GetImageEncoders() ব্যবহার করুন (এনকোডারের জন্য)। GetImageDecoders() ডিকোডারের জন্য।

আধুনিক বিকল্প: ImageSharp বা SkiaSharp লাইব্রেরি ব্যবহার করা ভালো (ক্রস-প্ল্যাটফর্ম, আরও ফিচার)।

  1. Windows PC-এ একাধিক ইমেজ সহজে রিসাইজ করুন – ধাপে ধাপে গাইড

  2. ম্যাক ইমেজ কোয়ালিটি না হারিয়ে রিসাইজ করুন: ধাপে ধাপে গাইড

  3. জন্মদিনের সকল ছবি একই আকারে রিসাইজ করুন সহজে

  4. Windows 11-এ PowerToys ব্যবহার করে একসাথে একাধিক ইমেজ রিসাইজ করুন