Додайте текст до зображення
.NET API Рішення для написання тексту на зображеннях
Aspose.Font для .NET — це комплексне рішення для розробників, які працюють зі шрифтами у своїх програмах .NET. Це спрощує такі завдання, як завантаження, редагування, перетворення та використання шрифтів для різних цілей. Однією з таких цілей є відтворення тексту. Рішення надає власний спосіб відтворення тексту на зображенні за допомогою певного шрифту, враховуючи кернінг і пропонуючи контроль над різними аспектами, такими як колір фону, колір тексту та розмір тексту.
Існує багато додатків, у яких додавання тексту до зображень може бути корисною функціональністю. Ось кілька категорій:
- Програми для редагування фотографій, такі як Canva, Adobe Express і PicLab, дозволяють редагувати фотографії різними способами, і додавання тексту є основною функцією.
- Програми для соціальних мереж, такі як Instagram і Facebook, мають вбудовані інструменти редагування тексту для фотографій. Це дає змогу додавати підписи, цитати чи інші повідомлення безпосередньо в програмі перед тим, як ділитися.
- Якщо ви створюєте складніші дизайни, як-от листівки, плакати чи презентації, програми для графічного дизайну, такі як Photoshop або GIMP, пропонують розширені функції редагування тексту. Вони дозволяють точно контролювати розміщення тексту, форматування та ефекти.
- Культура мемів процвітає завдяки смішному тексту на зображенні. Програми для створення мемів, такі як Imgflip або Meme Generator, надають шаблони та інструменти для редагування, призначені для створення смішних зображень або зображень із підписами.
- Створення привабливих візуальних елементів для маркетингових кампаній часто передбачає додавання тексту до зображень. Інструменти маркетингу та реклами, як-от Spark Post або Stencil, дозволяють створювати дописи в соціальних мережах, листівки чи оголошення, які ефективно включають текст.
- Освітні програми – використовують текст на зображеннях для створення інфографіки, навчальних посібників або інших візуальних навчальних матеріалів.
Як бачите існує багато причин для додавання тексту до зображень, як-от додавання контексту до зображення, привернення уваги користувача, створення повідомлення тощо. За допомогою Aspose.Font це можна легко впровадити у ваші програми на основі коду C#.
Щоб запустити приклади, вам знадобиться:
API Aspose.Font для .NET — це багатофункціональний, потужний і простий у використанні API для роботи з документами та перетворення для платформи C#.
Відкрити менеджер пакунків NuGet і знайти і встановити Aspose.Font. Ви також можете використати наступну команду з консолі менеджера пакетів.
Package Manager Console Command
PM> Install-Package Aspose.Font
Покрокова інструкція для відображення тексту на зображеннях C#:
Наданий фрагмент коду визначає функцію під назвою CustomDrawText, яка приймає різні аргументи для відтворення тексту на растровому зображенні з використанням указаного шрифту. Ось розбивка функціональності:
- Отримайте ідентифікатори гліфів, щоб представити певну форму символів у шрифті.
- Встановіть роздільну здатність вихідного растрового зображення.
- Заповніть фон растрового зображення пензлем із комплекту.
- Встановіть згладжування для більш плавного відтворення тексту та ініціалізуйте змінні для позиціонування гліфів.
- Відобразити тексти за допомогою вказаних гліфів за допомогою засобу відтворення.
- Збережіть остаточне растрове зображення з намальованим текстом у вказаний файл.
C# Код для написання тексту на зображеннях
public static void CustomDrawText(string text, IFont font, double fontSize, Brush backgroundBrush, Brush textBrush, string outFile, Bitmap bitmap, double kerningCoefficient = 1, double coordinateX = 0, double coordinateY = 0)
{
//Get glyph identifiers for every symbol in the text line
GlyphId[] gids = new GlyphId[text.Length];
for (int i = 0; i < text.Length; i++)
gids[i] = font.Encoding.DecodeToGid(text[i]);
// Set common drawing settings
double dpi = 300;
double resolutionCorrection = dpi / 72; // 72 is font's internal dpi
// Prepare the output bitmap
Bitmap outBitmap = bitmap;
outBitmap.SetResolution((float)dpi, (float)dpi);
Graphics outGraphics = Graphics.FromImage(outBitmap);
outGraphics.FillRectangle(backgroundBrush, 0, 0, outBitmap.Width, outBitmap.Height);
outGraphics.SmoothingMode = SmoothingMode.HighQuality;
//Declare coordinate variables and the previous gid
GlyphId previousGid = null;
double glyphXCoordinate = coordinateX;
double glyphYCoordinate = coordinateY;
glyphYCoordinate += fontSize * resolutionCorrection;
//The loop paints every glyph in gids
foreach (GlyphId gid in gids)
{
// if the font contains the gid
if (gid != null)
{
Glyph glyph = font.GlyphAccessor.GetGlyphById(gid);
if (glyph == null)
continue;
// The path that accepts drawing instructions
GraphicsPath path = new GraphicsPath();
// Create the IGlyphOutlinePainter implementation
GlyphOutlinePainter outlinePainter = new GlyphOutlinePainter(path);
// Create the renderer
Aspose.Font.Renderers.IGlyphRenderer renderer = new Aspose.Font.Renderers.GlyphOutlineRenderer(outlinePainter);
// Get common glyph properties
double kerning = 0;
// Get the kerning value
if (previousGid != null)
{
kerning = (font.Metrics.GetKerningValue(previousGid, gid) / glyph.SourceResolution) * fontSize * resolutionCorrection;
kerning += FontWidthToImageWith(font.Metrics.GetGlyphWidth(previousGid), glyph.SourceResolution, fontSize);
}
// Glyph positioning - increase the glyph X coordinate according to the kerning distance
glyphXCoordinate += kerning * kerningCoefficient;
// Glyph placement matrix
TransformationMatrix glyphMatrix = new TransformationMatrix(
new double[]
{ fontSize * resolutionCorrection,
0,
0,
// negative because of the bitmap coordinate system begins from the top
- fontSize*resolutionCorrection,
glyphXCoordinate,
glyphYCoordinate
});
// Render the current glyph
renderer.RenderGlyph(font, gid, glyphMatrix);
// Fill the path
path.FillMode = FillMode.Winding;
outGraphics.FillPath(textBrush, path);
}
//Set the current gid as previous to get the correct kerning for the next glyph
previousGid = gid;
}
//Save the results
outBitmap.Save(outFile);
}FAQ
1. Які зображення можна використовувати для написання на ньому тексту?
API найкраще працюють із чіткими зображеннями високої роздільної здатності. Уникайте розмитих фотографій або зображень зі складним фоном, оскільки вони можуть вплинути на точність розміщення тексту.
2. Чи можу я налаштувати шрифт і стиль тексту?
Так, Aspose.Font дозволяє вказувати стилі шрифтів, розміри та навіть кольори для текстового накладення. Він пропонує налаштований вивід тексту, наприклад, коли ви хочете стиснути, розтягнути, повернути текст під кутом або щось інше.
3. Як API обробляє розміщення тексту?
Він пропонує попередньо визначені місця розташування, як-от вирівнювання по центру або знизу, але також пропонує більш просунутий (спеціальний) спосіб перетворення тексту на зображення за допомогою одного з методів RenderGlyph() класу GlyphOutlineRenderer.