Knihovna Open Source C# .NET pro manipulaci s obrázky
Číst, zapisovat, upravovat, měnit velikost a převádět obrázky PNG, JPEG, GIF a TIFF za běhu prostřednictvím bezplatného rozhraní .NET API.
ImageProcessor je bezplatná knihovna pro zpracování obrázků .NET s otevřeným zdrojovým kódem, která umožňuje počítačovým programátorům manipulovat s obrázky za běhu uvnitř jejich vlastních aplikací .NET. Knihovna je velmi rychlá, stabilní, rozšiřitelná, uživatelsky přívětivá a obsahuje skvělé funkce. Knihovna poskytuje plnou podporu pro práci s formáty souborů JPG, JPEG, PNG, GIF, PNG8 (animované i statické), BMP a TIFF.
Knihovna je převážně rozdělena na dvě dílčí knihovny. První knihovna je známá jako ImageProcessor a poskytuje plnou podporu pro práci s desktopem a aplikacemi. 2. knihovna ImageProcessor.Web je vytvořena pro ASP.NET a poskytuje plnou podporu pro práci s webovými aplikacemi. Budeme diskutovat především o prvním díle a o tom, jak jej mohou vývojáři využít ve svých aplikacích.
Začínáme s ImageProcessor
Na NuGet je k dispozici stabilní verze. ImageProcessor je a vždy bude podporován pouze na .NET Framework běžícím na operačním systému Windows. Nepokoušejte se prosím používat s .NET Core nebo NET 5+.
Nainstalujte ImageProcessor přes NuGet
NuGet\Install-Package ImageProcessor -Version number
Aplikujte filtry na obrázky prostřednictvím knihovny C#
Open source knihovna ImageProcessor umožňuje vývojářům C# .NET snadno filtrovat obrázky uvnitř jejich vlastních aplikací. Použijte prosím třídu MatrixFilters k přiřazení správného filtru k vašim obrázkům. K dispozici je několik typů filtrů, které můžete použít na své snímky, například BlackWhite, Comic, Gotham, GreyScale, HiSatch, Invert, Lomograph, LoSatch, Polaroid a Sepia.
Přidejte k obrázku textový vodoznak
Pomocí open source knihovny ImageProcessor můžete snadno umístit obrázek nebo textový vodoznak kamkoli na obrázky. Knihovna poskytuje plnou podporu pro přidávání vodoznaku do obrázků pomocí několika řádků kódu. Požadovaná třída obsahuje všechny vlastnosti potřebné k přidání textového vodoznaku do obrázku. Podporuje barvu textu, výběr písma, velikost písma, styl, krytí, polohu, vržený stín a další.
Oříznout obrázky pomocí .NET
ImageProcessor dává vývojářům softwaru možnost oříznout aktuální obrázek na vlastní umístění a velikost. Oříznutí je nejdůležitější a přitom snadný proces, který je třeba vzít v úvahu při úpravě obrázků a fotografií. Poskytuje několik vlastností, které uživatelům pomáhají oříznout obrázky podle jejich potřeb. Například vlevo, nahoře, vpravo, dole a CropMode.
Oříznutí obrázků pomocí C# .NET
namespace ImageProcessor.Tests.Processing
{
public class CropTests
{
private const string category = "Crop";
[Fact]
public void CropSettingsConstructorSetsOptions()
{
const int Left = 1;
const int Top = 1;
const int Right = 1;
const int Bottom = 1;
var expected = new CropOptions(Left, Top, Right, Bottom, CropMode.Percentage);
Assert.Equal(expected.Left, Left);
Assert.Equal(expected.Top, Top);
Assert.Equal(expected.Right, Right);
Assert.Equal(expected.Bottom, Bottom);
}
[Fact]
public void CropSettingsConstructorChecksInput()
{
Assert.Throws(() => new CropOptions(-1, 0, 0, 0));
Assert.Throws(() => new CropOptions(0, -1, 0, 0));
Assert.Throws(() => new CropOptions(0, 0, -1, 0));
Assert.Throws(() => new CropOptions(0, 0, 0, -1));
}
[Fact]
public void CropConstructorSetsOptions()
{
var expected = new CropOptions(1, 2, 3, 4, CropMode.Percentage);
var processor = new Crop(expected);
Assert.Equal(expected, processor.Options);
}
[Fact]
public void FactoryCanCropRectangle()
{
// Test our issue crop.
TestFile file = TestFiles.Jpeg.EXIFCropIssue559;
var bounds = new Rectangle(939, 439, 2778, 2778);
using (var factory = new ImageFactory())
{
factory.Load(file.FullName)
.Crop(bounds)
.SaveAndCompare(file, category, bounds);
}
}
[Fact]
public void FactoryCanCropPercentile()
{
// Test our issue crop.
TestFile file = TestFiles.Jpeg.Penguins;
var settings = new CropOptions(15, 25, 10, 5, CropMode.Percentage);
using (var factory = new ImageFactory())
{
factory.Load(file.FullName)
.Crop(settings)
.SaveAndCompare(file, category, settings);
}
}
}
}