فشردهسازی تصویر با C#
فشردهسازی تصویر فرآیند کاهش حجم فایلهای تصویری است، بدون اینکه کیفیت آنها بهطور قابل توجهی تحت تأثیر قرار گیرد. در زبان برنامهنویسی C#، میتوان از کتابخانههای مختلف برای انجام این فرآیند استفاده کرد. در اینجا، به بررسی روشهای مختلف برای فشردهسازی تصاویر میپردازیم.
روشهای فشردهسازی
فشردهسازی تصاویر عمدتاً به دو دسته تقسیم میشود: فشردهسازی با اتلاف (Lossy) و فشردهسازی بدون اتلاف (Lossless).
- فشردهسازی با اتلاف: این نوع فشردهسازی معمولاً حجم فایل را بهطرز چشمگیری کاهش میدهد. با این حال، مقداری از کیفیت تصویر از دست میرود. فرمتهایی مانند JPEG معمولاً از این نوع فشردهسازی استفاده میکنند.
- فشردهسازی بدون اتلاف: در این روش، کیفیت تصویر حفظ میشود و فقط حجم فایل کاهش مییابد. فرمتهایی مانند PNG از این نوع فشردهسازی بهره میبرند.
استفاده از کتابخانهها
در C#، میتوان از کتابخانههایی مانند System.Drawing و ImageSharp برای فشردهسازی تصویر استفاده کرد. در ادامه، یک مثال ساده برای فشردهسازی تصویر با استفاده از System.Drawing آورده شده است.
```csharp
using System.Drawing;
using System.Drawing.Imaging;
public void CompressImage(string inputFilePath, string outputFilePath, long quality)
{
using (Image image = Image.FromFile(inputFilePath))
{
var jpegEncoder = GetEncoder(ImageFormat.Jpeg);
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
image.Save(outputFilePath, jpegEncoder, encoderParameters);
}
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
```
نکات مهم
- کیفیت: مقدار quality باید بین 0 تا 100 باشد. مقدار پایینتر، فشردهسازی بیشتری را نشان میدهد.
- فرمت تصویر: حتماً توجه کنید که از فرمتهای مناسب برای فشردهسازی استفاده کنید.