Files
Watermark.Net/docs/README.ru.md
2026-05-29 00:59:15 +03:00

8.1 KiB
Raw Permalink Blame History

Watermark.Net

.NET NuGet Version NuGet Downloads Lecense GitHub last commit Codacy Badge

Watermark.Net — современная кроссплатформенная библиотека для .NET, предназначенная для добавления текстовых и графических watermarkов к изображениям с использованием C#.

Библиотека построена на базе SixLabors.ImageSharp и предоставляет чистый и расширяемый API для:

  • добавления watermarkов к изображениям в .NET
  • пакетной обработки изображений
  • защиты авторских прав
  • наложения логотипов
  • автоматизации брендинга
  • генерации draft/staging изображений

Подходит для ASP.NET приложений, media pipelineов, SaaS-платформ, desktop-приложений, automation scripts и backend image processing сервисов.


Почему Watermark.Net?

  • Современная архитектура на .NET 8+
  • Полная кроссплатформенность (Windows, Linux, macOS)
  • Основана на ImageSharp
  • Простой и чистый API
  • Пакетная обработка директорий
  • Поддержка текстовых и графических watermarkов
  • Режим tiled/repeated watermark
  • Поддержка Dependency Injection
  • Open-source и лицензия MIT

Возможности

Текстовые watermarkи

Поддерживается:

  • пользовательские шрифты
  • настройка размера текста
  • поворот
  • прозрачность
  • отступы
  • система позиционирования 3x3
  • tiled/pattern режим

Графические watermarkи

Наложение логотипов и PNG:

  • поддержка прозрачности PNG
  • настройка opacity
  • масштабирование
  • позиционирование
  • tiled/repeated режим

Пакетная обработка

Обработка целых папок изображений одним вызовом метода.

Поддерживаемые форматы:

  • JPEG
  • PNG
  • BMP
  • GIF

Установка

Установка через NuGet:

dotnet add package Watermark.Net

Или через Package Manager:

Install-Package Watermark.Net

Требования:

  • .NET 8 или новее

Быстрый старт

Добавление текстового watermark

using SixLabors.Fonts;
using SixLabors.ImageSharp;
using WatermarkNet.Core;
using WatermarkNet.Enums;
using WatermarkNet.Models.Definitions;

var pipeline = new WatermarkPipeline(new FileManager(), new ImageRenderer());

var watermark = new TextWatermark
{
    Text = "CONFIDENTIAL",
    Font = SystemFonts.CreateFont("Arial", 36),

    Layout =
    {
        Position = ImagePosition.BottomRight,
        Scale = 0.5f
    },

    Style =
    {
        Color = Color.White,
        Opacity = 0.8f
    }
};

ResultImage result = pipeline.ProcessImage(
    "input.jpg",
    "output",
    watermark
);

Console.WriteLine($"Saved to: {result.Path}");

Добавление графического watermark

using SixLabors.ImageSharp;
using WatermarkNet.Core;
using WatermarkNet.Enums;
using WatermarkNet.Models.Definitions;

var pipeline = new WatermarkPipeline(new FileManager(), new ImageRenderer());

var watermark = new ImageWatermark
{
    ImagePath = "logo.png",

    Layout =
    {
        Position = ImagePosition.Center,
        Scale = 0.3f
    },

    Style =
    {
        Opacity = 0.7f,
        Pave = true
    }
};

List<ResultImage> results = pipeline.ProcessDirectory(
    "images",
    "output",
    watermark
);

Console.WriteLine($"Processed {results.Count} images");

Типичные сценарии использования

Watermark.Net часто используется для:

  • защиты фотографий watermarkами
  • брендирования изображений интернет-магазинов
  • SaaS image pipelineов
  • маркировки AI-generated изображений
  • CMS систем
  • автоматизации соцсетей
  • backend image processing сервисов
  • ASP.NET image serviceов
  • массовой обработки изображений
  • внутренних документов и черновиков

Архитектура

Watermark.Net использует lightweight pipeline architecture с чётким разделением ответственности.

┌──────────────────────────────────────┐
│          WatermarkPipeline           │
│       Основной orchestration layer   │
├──────────────────────────────────────┤
│      IFileManager / FileManager      │
│       Абстракция файловой системы    │
├──────────────────────────────────────┤
│           ImageRenderer              │
│       Pure rendering engine          │
└──────────────────────────────────────┘

Типы watermarkов

Тип Описание
TextWatermark Конфигурация текстового watermark
ImageWatermark Конфигурация watermark-изображения
ResultImage Модель результата обработки
IWatermarkDefinition Базовая абстракция watermark

Система позиционирования

Поддерживается 9 встроенных позиций:

  • TopLeft
  • TopCenter
  • TopRight
  • CenterLeft
  • Center
  • CenterRight
  • BottomLeft
  • BottomCenter
  • BottomRight

Продвинутое использование

Tiled / Pave режим

Повторяет watermark по всей поверхности изображения:

var watermark = new TextWatermark
{
    Text = "DRAFT",
    Font = SystemFonts.CreateFont("Arial", 36),

    Style =
    {
        Color = Color.Red,
        Pave = true
    },

    Layout =
    {
        Scale = 0.3f
    }
};

Rotation & Padding

var watermark = new TextWatermark
{
    Text = "CONFIDENTIAL",
    Font = SystemFonts.CreateFont("Arial", 24),

    Layout =
    {
        Position = ImagePosition.TopLeft,
        RotateAngle = 45,
        Padding = 20
    }
};

Dependency Injection

services.AddSingleton<IFileManager, FileManager>();

services.AddSingleton<ImageRenderer>();

services.AddTransient<WatermarkPipeline>();

Contributing

Pull Requestы и contributions приветствуются.

Для участия:

  1. Сделайте fork репозитория
  2. Создайте feature branch
  3. Добавьте тесты
  4. Запустите test suite
  5. Откройте Pull Request

License

Проект распространяется под лицензией MIT.