mirror of
https://github.com/Geckon01/Watermark.Net.git
synced 2026-06-17 08:37:48 +00:00
313 lines
8.1 KiB
Markdown
313 lines
8.1 KiB
Markdown
# Watermark.Net
|
|
|
|
[](https://github.com/Geckon01/Watermark.Net/actions/workflows/dotnet.yml)
|
|

|
|

|
|

|
|

|
|
[](https://app.codacy.com/gh/Geckon01/Watermark.Net/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
|
|
**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:
|
|
|
|
```bash
|
|
dotnet add package Watermark.Net
|
|
```
|
|
|
|
Или через Package Manager:
|
|
|
|
```powershell
|
|
Install-Package Watermark.Net
|
|
```
|
|
|
|
Требования:
|
|
|
|
- .NET 8 или новее
|
|
|
|
---
|
|
|
|
# Быстрый старт
|
|
|
|
## Добавление текстового watermark
|
|
|
|
```csharp
|
|
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
|
|
|
|
```csharp
|
|
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 с чётким разделением ответственности.
|
|
|
|
```text
|
|
┌──────────────────────────────────────┐
|
|
│ 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 по всей поверхности изображения:
|
|
|
|
```csharp
|
|
var watermark = new TextWatermark
|
|
{
|
|
Text = "DRAFT",
|
|
Font = SystemFonts.CreateFont("Arial", 36),
|
|
|
|
Style =
|
|
{
|
|
Color = Color.Red,
|
|
Pave = true
|
|
},
|
|
|
|
Layout =
|
|
{
|
|
Scale = 0.3f
|
|
}
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Rotation & Padding
|
|
|
|
```csharp
|
|
var watermark = new TextWatermark
|
|
{
|
|
Text = "CONFIDENTIAL",
|
|
Font = SystemFonts.CreateFont("Arial", 24),
|
|
|
|
Layout =
|
|
{
|
|
Position = ImagePosition.TopLeft,
|
|
RotateAngle = 45,
|
|
Padding = 20
|
|
}
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## Dependency Injection
|
|
|
|
```csharp
|
|
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. |