Добавьте текст к изображению
Решение .NET API для написания текста на изображениях
Aspose.Font for .NET — это комплексное решение для разработчиков, работающих со шрифтами в своих .NET-приложениях. Он упрощает такие задачи, как загрузка, редактирование, преобразование и использование шрифтов для различных целей. Одной из таких целей является рендеринг текста. Решение предоставляет индивидуальный способ рендеринга текста на изображении с использованием определенного шрифта, учитывая кернинг и предлагая контроль над различными аспектами, такими как цвет фона, цвет текста и размер текста.
Существует множество приложений, в которых добавление текста к изображениям является полезной функцией, предназначенной для различных целей. Вот несколько категорий:
- Приложения для редактирования фотографий, такие как Canva, Adobe Express и PicLab, позволяют редактировать фотографии различными способами, при этом добавление текста является основной функцией.
- Приложения для социальных сетей, такие как Instagram и Facebook, имеют встроенные инструменты для редактирования текста на фотографиях. Это позволяет вам добавлять подписи, цитаты или другие сообщения непосредственно в приложении, прежде чем поделиться ими.
- Если вы создаете более сложные проекты, такие как флаеры, плакаты или презентации, приложения для графического дизайна, такие как Photoshop или GIMP, предлагают расширенные функции редактирования текста. Они позволяют точно контролировать размещение, форматирование и эффекты текста.
- Культура мемов процветает благодаря юмору «текст на изображении». Приложения для создания мемов, такие как Imgflip или Meme Generator, предоставляют шаблоны и инструменты редактирования, предназначенные для создания забавных изображений или изображений с подписями.
- Создание привлекательных визуальных эффектов для маркетинговых кампаний часто включает добавление текста к изображениям. Инструменты маркетинга и рекламы, такие как Spark Post или Stencil, позволяют создавать публикации в социальных сетях, листовки и рекламные объявления, эффективно включающие текст.
- Образовательные приложения. Используйте текст на изображениях для создания инфографики, учебных пособий и других визуальных учебных материалов.
Существует много причин для добавления текста к изображениям, например, добавление контекста к изображению, привлечение внимания пользователя, создание сообщения и т. д. С помощью Aspose.Font эту функциональность можно легко реализовать в ваших приложениях на основе кода C#.
Для запуска примеров вам нужно:
Aspose.Font for .NET API — многофункциональный, мощный и простой в использовании 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