Efektyvus vaizdo suspaudimas yra esminis šiuolaikinių žiniatinklio ir mobiliųjų programų komponentas, nes jis padeda sumažinti saugojimo erdvę ir pagerinti perdavimo greitį. Šiame vadove mes išnagrinėsime, kaip palyginti nuostolius ir neturtingus paveikslėlių kompresijos metodus naudojant galingą Aspose.Imaging .NET biblioteką.

Introduction

Vaizdo suspaudimas gali būti plačiai klasifikuojamas į du tipus: nuostolingas ir neprarastas. Kiekvienas metodas turi savo pranašumus ir tinka skirtingiems scenarijams:

  • Lossy Compression: Sumažina failų dydį, pašalinant ne esmines duomenis, dėl to šiek tiek sumažėja kokybė.
  • Nelaimingas suspaudimas: išsaugo visus vaizdo duomenis, mažinant failų dydį, užtikrinant, kad nebūtų kokybės praradimo.

Šiame straipsnyje mes išnagrinėsime, kaip šios technikos gali būti įgyvendintos naudojant Aspose.Imaging .NET ir aptarti jų programas įvairiuose kontekstuose, pavyzdžiui, žiniatinklio pristatymo, archyvų saugojimo ar profesinio redagavimo darbo srautus.

Žymos archyvas: Aspose.Imaging

Prieš nusileidžiant į kodo pavyzdžius, įsitikinkite, kad turite šiuos nustatymus:

  • Įdiegti .NET SDK jūsų sistemoje.
  • Pridėti Aspose.Imaging į savo projektą naudojant NuGet:
using Aspose.Imaging;
using Aspose.Imaging.FileFormats.Jpeg;

// Initialize metered license
Metered metered = new Metered();
metered.SetMeteredKey("your-public-key", "your-private-key");

string inputPath = @"path\to\input.jpg";
string outputPathLossy = @"path\to\output_lossy.jpg";
string outputPathLossless = @"path\to\output_lossless.png";

// Load the image
JpegImage jpegImage = (JpegImage)Image.Load(inputPath);

// Lossy Compression Example
using (MemoryStream msLossy = new MemoryStream())
{
    // Save with lossy compression settings
    jpegImage.Save(msLossy, new JpegOptions { Quality = 75 });
    
    File.WriteAllBytes(outputPathLossy, msLossy.ToArray());
}

// Lossless Compression Example
using (PngOptions options = new PngOptions())
{
    options.Source = new FileCreateSource(outputPathLossless, false);
    jpegImage.Save(outputPathLossless, options);
}

Suprasti kodą

Pažvelkime į pagrindines šios įgyvendinimo dalis:

1 žingsnis: pradinis nustatymas

Pirma, mes pradedame matuojamą licenciją ir įkeliame įvedimo failą:

// Initialize metered license
Metered metered = new Metered();
metered.SetMeteredKey("your-public-key", "your-private-key");

string inputPath = @"path\to\input.jpg";
JpegImage jpegImage = (JpegImage)Image.Load(inputPath);

2 žingsnis: konfigūruoti nuostolių suspaudimą

Toliau nustatome nuostolių kompresijos nustatymus ir išsaugome vaizdą:

using (MemoryStream msLossy = new MemoryStream())
{
    // Save with lossy compression settings
    jpegImage.Save(msLossy, new JpegOptions { Quality = 75 });
    
    File.WriteAllBytes(outputPathLossy, msLossy.ToArray());
}

3 žingsnis: konfigūruoti kompresą be nuostolių

Dabar mes konfigūruojame neprarastą suspaudimą ir išsaugome vaizdą:

using (PngOptions options = new PngOptions())
{
    options.Source = new FileCreateSource(outputPathLossless, false);
    jpegImage.Save(outputPathLossless, options);
}

Pagrindinės sąvokos paaiškinamos

  • Lossy kompresijos: The JpegOptions klasė leidžia nustatyti nuostolių kompresijos kokybės lygį. Mažesnė vertė lemia mažesnį failų dydį, bet su sumažėjusiu vaizdo kokybe.

  • Bez nuostolių suspaudimas: sutaupant vaizdą kaip PNG, Aspose.Imaging automatiškai taiko neprarastą kompresiją, užtikrinant, kad per procesą nebūtų prarasti duomenų.

Conclusion

Naudodami „Aspose.Imaging“ tvirtas funkcijas, kūrėjai gali optimizuoti įvairiausių programų vaizdus, išlaikydami aukščiausius kokybės standartus Kaip palyginti Lossy vs. Lossless kompresiją .NET.

More in this category