Основи ImageSharp
Що таке ImageSharp?
ImageSharp та його мета.
ImageSharp є відкритою бібліотекою для обробки зображень у мові програмування C#. Розроблена командою SixLabors з ціллю надати розробникам потужний і зручний інструментарій для роботи з графікою та зображеннями. Дозволяючи здійснювати різноманітні операції над зображеннями.
Цілі ImageSharp:
Простота використання: ImageSharp намагається забезпечити зручний та легкий інтерфейс для програмістів, щоб вони могли легко виконувати операції над зображеннями без глибокого розуміння внутрішньої роботи бібліотеки.
Широкий функціонал: Бібліотека надає широкий спектр можливостей, таких як зміна розміру, обрізка, поворот, масштабування, фільтри, робота з кольорами та багато іншого.
Продуктивність: ImageSharp прагне бути ефективним у роботі з великою кількістю зображень, намагаючись мінімізувати витрати ресурсів та забезпечити швидку обробку.
Підтримка різних форматів: Бібліотека дозволяє роботу з різними форматами файлів зображень, такими як JPEG, PNG, GIF та інші.
ImageSharp - Встановлення
Як встановити ImageSharp? Використовуйте 'dotnet add package'!
Відкрийте термінал або командний рядок.
Перейдіть у папку вашого проєкту. Використовуйте команду
cdдля переходу у директорію проєкту. Наприклад:cd шлях_до_вашого_проєктуВстановіть пакети за допомогою dotnet CLI. Використайте команду
dotnet add package, яка дозволяє додавати пакети до проєкту. У цьому випадку встановлюємо два пакети: 'SixLabors.ImageSharp' та 'SixLabors.ImageSharp.Drawing'.dotnet add package SixLabors.ImageSharp dotnet add package SixLabors.ImageSharp.DrawingПеревірте, чи пакети успішно встановлені. Після виконання команд перевірте вивід терміналу на наявність повідомлень про успішне встановлення пакетів та відсутність помилок.
Після виконання цих кроків ви зможете почати використовувати функціонал 'SixLabors.ImageSharp' та 'SixLabors.ImageSharp.Drawing' для обробки та маніпулювання зображеннями у вашому проєкті.
Бібліотека SimpleImageSharp та її Мета
Бібліотека SimpleImageSharp є спрощеним інтерфейсом для бібліотеки SixLabors.ImageSharp.
Бібліотека SimpleImageSharp є спрощеним інтерфейсом для бібліотеки SixLabors.ImageSharp для зручної роботи з обробкою та маніпулюваннями зображеннями. Ця бібліотека має на меті полегшити створення графічних операцій, таких як малювання прямокутників, додавання тексту, зміна розміру зображення та інші операції.
Використання бібліотеки SimpleImageSharp:
1. Малювання Прямокутника:
Функція DrawRectangle дозволяє малювати прямокутник на зображенні з заданими параметрами.
using Image image = Image.Load("input.png");
Pen pen = Pens.Solid(Color.Green, 20);
Rectangle react = new Rectangle(image.Width / 2, image.Height / 2, 200, 200);
SimpleImageSharpUtils.DrawRectangle(image, pen, react, true);
image.Save("output.png");2. Додавання Тексту:
Функція DrawText дозволяє додавати текст на зображення з вказаною шрифтом та кольором.
using Image image = Image.Load("input.png");
FontCollection collection = new();
FontFamily family = collection.Add("Hack-Regular.ttf");
Font font = family.CreateFont(50, FontStyle.Italic);
SimpleImageSharpUtils.DrawText(image, "тест, друзі, просто тест", font, Color.Red, image.Width / 2, image.Height / 2);
image.Save("output.png");3. Додавання Тексту з Заданим Шрифтом:
Функція DrawTextHandleFont дозволяє додавати текст, використовуючи шрифт із зазначеним шляхом та розміром.
using Image image = Image.Load("input.png");
SimpleImageSharpUtils.DrawTextHandleFont(image, "тест, друзі, просто тест (другий)", "Hack-Regular.ttf", 10, Color.Red, image.Width / 2, image.Height / 2);
image.Save("output.png");4. Зміна Розміру Зображення:
Функція ResizeImage дозволяє змінювати розмір зображення на задані ширину та висоту.
using Image image = Image.Load("input.png");
SimpleImageSharpUtils.ResizeImage(image, 1000, 1000);
image.Save("output.png");5. Масштабування Зображення:
Функція ScaleImage дозволяє масштабувати розмір зображення на заданий коефіцієнт.
using Image image = Image.Load("input.png");
SimpleImageSharpUtils.ScaleImage(image, 10);
image.Save("output.png");Ці функції SimpleImageSharp дозволяють вам ефективно виконувати різні операції над зображеннями, надаючи простий та зрозумілий інтерфейс для роботи з графікою.
Бібліотека SimpleImageSharp - детальний огляд використання
Бібліотека SimpleImageSharp та її функціонал.
Використання бібліотеки SimpleImageSharp
Загальний огляд
Бібліотека SimpleImageSharp є обгорткою (wrapper) для бібліотеки обробки зображень SixLabors.ImageSharp. Ця бібліотека дозволяє легко виконувати операції з обробки та маніпуляції зображеннями за допомогою простих та зрозумілих функцій.
Мети SimpleImageSharp:
Спростити використання SixLabors.ImageSharp: SimpleImageSharp розроблено з метою полегшення інтерфейсу взаємодії з SixLabors.ImageSharp, дозволяючи розробникам швидше та зручніше використовувати функціонал обробки зображень.
Забезпечити зручний API для маніпуляцій зображеннями: Функції SimpleImageSharpUtils мають інтуїтивно зрозумілі назви та параметри, що спрощує їх використання при розробці додатків.
Приклад використання функції SimpleImageSharpUtils.DrawRectangle
Функція DrawRectangle дозволяє малювати прямокутник на зображенні з вказаною рамкою та параметрами.
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Визначення параметрів прямокутника
Pen pen = Pens.Solid(Color.Green, 20);
Rectangle react = new Rectangle(image.Width / 2, image.Height / 2, 200, 200);
// Малювання прямокутника
SimpleImageSharpUtils.DrawRectangle(image, pen, react, true);
// Збереження результату
image.Save("output.png");
}
}У цьому прикладі ми завантажуємо зображення з файлу "input.png", визначаємо рамку прямокутника (розташування та розмір) і малюємо його на зображенні за допомогою функції SimpleImageSharpUtils.DrawRectangle. Результат зберігається у файл "output.png".
Приклад використання функції SimpleImageSharpUtils.DrawText
Функція DrawText дозволяє додавати текст на зображення з вказаними параметрами шрифту, кольору та положення.
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Визначення параметрів тексту
FontCollection collection = new();
FontFamily family = collection.Add("Hack-Regular.ttf");
Font font = family.CreateFont(50, FontStyle.Italic);
Color textColor = Color.Red;
int textX = image.Width / 2;
int textY = image.Height / 2;
// Додавання тексту на зображення
SimpleImageSharpUtils.DrawText(image, "test, fellas, just a test", font, textColor, textX, textY);
// Збереження результату
image.Save("output.png");
}
}У цьому прикладі ми завантажуємо зображення з файлу "input.png", визначаємо параметри тексту (шрифт, колір, положення) та додаємо текст на зображення за допомогою функції SimpleImageSharpUtils.DrawText. Результат зберігається у файл "output.png".
Приклад використання функції SimpleImageSharpUtils.DrawTextHandleFont
Функція DrawTextHandleFont дозволяє малювати текст на зображенні з використанням вказаного шрифту та інших параметрів.
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Задання параметрів тексту
string text = "Тест, друзі, просто тест";
string fontPath = "Hack-Regular.ttf";
int fontSize = 10;
Color color = Color.Red;
int x = image.Width / 2;
int y = image.Height / 2;
// Малювання тексту з вказаним шрифтом
SimpleImageSharpUtils.DrawTextHandleFont(image, text, fontPath, fontSize, color, x, y);
// Збереження результату
image.Save("output.png");
}
}У цьому прикладі ми завантажуємо зображення з файлу "input.png", задаємо параметри тексту, такі як сам текст, шлях до файлу шрифту, розмір шрифту, колір тексту та розташування тексту на зображенні. Після цього ми викликаємо функцію SimpleImageSharpUtils.DrawTextHandleFont, яка використовує вказаний шрифт для відтворення тексту на зображенні. Результат зберігається у файл "output.png".
Приклад використання функції SimpleImageSharpUtils.ResizeImage
Функція ResizeImage дозволяє змінювати розмір зображення на нові значення ширини та висоти.
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Зміна розміру зображення
SimpleImageSharpUtils.ResizeImage(image, 1000, 1000);
// Збереження результату
image.Save("output.png");
}
}У цьому прикладі ми завантажуємо зображення з файлу "input.png" та викликаємо функцію SimpleImageSharpUtils.ResizeImage, передаючи нові значення ширини та висоти (у цьому випадку 1000x1000 пікселів). Результат зберігається у файл "output.png".
Приклад використання функції SimpleImageSharpUtils.ScaleImage
Функція ScaleImage дозволяє масштабувати розмір зображення на вказаний коефіцієнт.
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Масштабування зображення
SimpleImageSharpUtils.ScaleImage(image, 10);
// Збереження результату
image.Save("output.png");
}
}У цьому прикладі ми завантажуємо зображення з файлу "input.png" і застосовуємо масштабування до зображення за допомогою функції SimpleImageSharpUtils.ScaleImage з коефіцієнтом масштабування 10. Результат зберігається у файл "output.png".
Ця функція дозволяє зручно змінювати розміри зображення, використовуючи простий та зрозумілий інтерфейс бібліотеки SimpleImageSharp.
SimpleImageSharp - код
Код бібліотеки - SimpleImageSharp
Код бібліотеки:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
namespace SimpleImageSharp
{
public class SimpleImageSharpUtils
{
public static void DrawRectangle(Image image, Pen pen, Rectangle react, bool center)
{
Rectangle drawRectangle;
if (center)
{
drawRectangle = new Rectangle(react.X - react.Width / 2, react.Y - react.Height / 2, react.Width, react.Height);
}
else
{
drawRectangle = new Rectangle(react.X, react.Y, react.Width, react.Height);
}
image.Mutate(x => x.Draw(pen, drawRectangle));
}
public static void DrawText(Image image, string text, Font font, Color color, int x, int y)
{
Point point = new Point(x, y);
image.Mutate(x => x.DrawText(text, font, color, point));
}
public static void DrawTextHandleFont(Image image, string text, string fontPath, int fontSize, Color color, int x, int y)
{
FontCollection collection = new();
FontFamily family = collection.Add(fontPath);
Font font = family.CreateFont(fontSize, FontStyle.Italic);
DrawText(image, text, font, color, x, y);
}
public static void ResizeImage(Image image, int newWidth, int newHeight)
{
image.Mutate(x => x.Resize(newWidth, newHeight));
}
public static void ScaleImage(Image image, double fraction)
{
image.Mutate(x => x.Resize(Convert.ToInt32(image.Width * fraction), Convert.ToInt32(image.Height * fraction)));
}
public static void ToGrayscale(Image image)
{
image.Mutate(x => x.Grayscale());
}
}
}Проєкт - приклад використання бібліотеки ImageSharp у поєднанні з SimpleImageSharp
ImageSharp у поєднанні з SimpleImageSharp.
Код проєкту:
Наповнення файлу SimpleImageSharpExample.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.2" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.0" />
</ItemGroup>
</Project>Наповнення файлу Program.cs:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
using SimpleImageSharp;
class Program
{
static void Main()
{
// Завантаження зображення
using Image image = Image.Load("input.png");
// Визначення параметрів прямокутника
Pen pen = Pens.Solid(Color.Green, 20);
Rectangle react = new Rectangle(image.Width / 2, image.Height / 2, 200, 200);
// Малювання прямокутника
SimpleImageSharpUtils.DrawRectangle(image, pen, react, true);
// Визначення параметрів тексту
FontCollection collection = new();
FontFamily family = collection.Add("Hack-Regular.ttf");
Font font = family.CreateFont(50, FontStyle.Italic);
// Додавання тексту на зображення
SimpleImageSharpUtils.DrawText(image, "test, fellas, just a test", font, Color.Red, image.Width / 2, image.Height / 2);
// Додавання тексту із зазначенням шрифту
SimpleImageSharpUtils.DrawTextHandleFont(image, "test, fellas, just a test (second)", "Hack-Regular.ttf", 10, Color.Red, image.Width / 2, image.Height / 2);
// Масштабування зображення
SimpleImageSharpUtils.ScaleImage(image, 1.5);
// Збереження результату
image.Save("output.png");
}
}Наповнення файлу SimpleImageSharp.cs:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.Fonts;
namespace SimpleImageSharp
{
public class SimpleImageSharpUtils
{
public static void DrawRectangle(Image image, Pen pen, Rectangle react, bool center)
{
Rectangle drawRectangle;
if (center)
{
drawRectangle = new Rectangle(react.X - react.Width / 2, react.Y - react.Height / 2, react.Width, react.Height);
}
else
{
drawRectangle = new Rectangle(react.X, react.Y, react.Width, react.Height);
}
image.Mutate(x => x.Draw(pen, drawRectangle));
}
public static void DrawText(Image image, string text, Font font, Color color, int x, int y)
{
Point point = new Point(x, y);
image.Mutate(x => x.DrawText(text, font, color, point));
}
public static void DrawTextHandleFont(Image image, string text, string fontPath, int fontSize, Color color, int x, int y)
{
FontCollection collection = new();
FontFamily family = collection.Add(fontPath);
Font font = family.CreateFont(fontSize, FontStyle.Italic);
DrawText(image, text, font, color, x, y);
}
public static void ResizeImage(Image image, int newWidth, int newHeight)
{
image.Mutate(x => x.Resize(newWidth, newHeight));
}
public static void ScaleImage(Image image, double fraction)
{
image.Mutate(x => x.Resize(Convert.ToInt32(image.Width * fraction), Convert.ToInt32(image.Height * fraction)));
}
public static void ToGrayscale(Image image)
{
image.Mutate(x => x.Grayscale());
}
}
}Для роботи програми необхідні наступні файли:
1 - Шрифт (Hack-Regular.ttf)
2 - Зображення (input.png)
build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse