Fügen Sie den Text einem Bild hinzu
.NET-API-Lösung zum Schreiben von Text auf Bildern
Aspose.Font für .NET ist eine umfassende Lösung für Entwickler, die in ihren .NET-Anwendungen mit Schriftarten arbeiten. Es vereinfacht Aufgaben wie das Laden, Bearbeiten, Konvertieren und Verwenden von Schriftarten für verschiedene Zwecke. Ein solcher Zweck ist die Textwiedergabe. Die Lösung bietet eine benutzerdefinierte Möglichkeit, Text auf einem Bild mit einer bestimmten Schriftart darzustellen, berücksichtigt Kerning und bietet Kontrolle über verschiedene Aspekte wie Hintergrundfarbe, Textfarbe und Textgröße.
Es gibt viele Apps, bei denen das Hinzufügen von Text zu Bildern eine hilfreiche Funktion ist, die verschiedenen Zwecken dient. Hier sind einige Kategorien:
- Fotobearbeitungs-Apps – wie Canva, Adobe Express und PicLab – ermöglichen Ihnen die Bearbeitung von Fotos auf verschiedene Arten, und das Hinzufügen von Text ist eine Kernfunktion.
- Social-Media-Apps – wie Instagram und Facebook verfügen über integrierte Textbearbeitungstools für Fotos. Auf diese Weise können Sie Bildunterschriften, Zitate oder andere Nachrichten direkt in der App hinzufügen, bevor Sie sie teilen.
- Wenn Sie komplexere Designs wie Flyer, Poster oder Präsentationen erstellen, bieten Grafikdesign-Apps wie Photoshop oder GIMP erweiterte Textbearbeitungsfunktionen. Diese ermöglichen eine präzise Kontrolle über Textplatzierung, Formatierung und Effekte.
- Die Meme-Kultur lebt vom Text-auf-Bild-Humor. Apps zur Meme-Erstellung wie Imgflip oder Meme Generator bieten Vorlagen und Bearbeitungstools zum Erstellen lustiger Bilder oder Bilder mit Untertiteln.
- Um auffällige visuelle Elemente für Marketingkampagnen zu erstellen, ist häufig das Hinzufügen von Text zu Bildern erforderlich. Marketing- und Werbetools wie Spark Post oder Stencil ermöglichen Ihnen die Gestaltung von Social-Media-Beiträgen, Flyern oder Anzeigen, die Text effektiv integrieren.
- Lern-Apps – verwenden Sie Text auf Bildern, um Infografiken, Studienführer oder andere visuelle Lernmaterialien zu erstellen.
Es gibt viele Gründe, Bildern Text hinzuzufügen, z. B. das Hinzufügen von Kontext zu einem Bild, das Erregen der Aufmerksamkeit des Benutzers, das Erstellen einer Nachricht usw. Mit Aspose.Font kann diese Funktionalität problemlos in Ihre auf C#-Code basierenden Apps implementiert werden.
Um die Beispiele auszuführen, benötigen Sie:
Aspose.Font für .NET API, eine funktionsreiche, leistungsstarke und benutzerfreundliche API zur Dokumentbearbeitung und -konvertierung für die C#-Plattform.
Öffnen Sie den NuGet-Paketmanager, suchen Sie nach Aspose.Font und installieren Sie es. Sie können auch den folgenden Befehl über die Package Manager-Konsole verwenden.
Package Manager Console Command
PM> Install-Package Aspose.Font
Schritte zum Anzeigen von Text auf Bildern C#:
Der bereitgestellte Codeausschnitt definiert eine Funktion namens „CustomDrawText“, die verschiedene Argumente benötigt, um Text in einer Bitmap mit einer angegebenen Schriftart darzustellen. Hier ist eine Aufschlüsselung der Funktionalität:
- Rufen Sie die IDs der Glyphen ab, um eine bestimmte Zeichenform innerhalb der Schriftart darzustellen.
- Legen Sie die Auflösung der Ausgabebitmap fest.
- Füllen Sie den Hintergrund der Bitmap mit dem mitgelieferten Pinsel.
- Legen Sie Anti-Aliasing für eine flüssigere Textwiedergabe fest und initialisieren Sie Variablen für die Glyphenpositionierung.
- Rendern Sie Texte mithilfe der angegebenen Glyphen mit dem Renderer.
- Speichern Sie die endgültige Bitmap mit dem gezeichneten Text in der angegebenen Datei.
C#-Code zum Schreiben von Text auf Bildern
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. Welche Art von Bildern kann ich verwenden, um Text darauf zu schreiben?
APIs funktionieren am besten mit klaren, hochauflösenden Bildern. Vermeiden Sie verschwommene Fotos oder Bilder mit komplexen Hintergründen, da diese die Genauigkeit der Textplatzierung beeinträchtigen können.
2. Kann ich die Schriftart und den Stil des Textes anpassen?
Ja, Aspose.Font ermöglicht es Ihnen, Schriftarten, -größen und sogar -farben für Ihre Textüberlagerung festzulegen. Es bietet eine angepasste Ausgabe des Textes, beispielsweise wenn Sie den Text komprimieren, strecken, in einem Winkel drehen oder etwas anderes möchten.
3. Wie handhabt die API die Textplatzierung?
Es bietet vordefinierte Platzierungen wie zentrierte oder untere Ausrichtung, aber auch eine erweiterte (benutzerdefinierte) Möglichkeit, Text mithilfe einer der RenderGlyph()-Methoden der GlyphOutlineRenderer-Klasse in ein Bild umzuwandeln.