Aggiungi il testo a un’immagine
Soluzione API .NET per scrivere testo sulle immagini
Aspose.Font per .NET è una soluzione completa per gli sviluppatori che lavorano con i caratteri nelle loro applicazioni .NET. Semplifica attività come caricamento, modifica, conversione e utilizzo di caratteri per scopi diversi. Uno di questi scopi è il rendering del testo. La soluzione fornisce un modo personalizzato per eseguire il rendering del testo su un'immagine utilizzando un carattere particolare, considerando la crenatura e offrendo il controllo su vari aspetti come il colore dello sfondo, il colore del testo e la dimensione del testo.
Esistono molte app in cui l’aggiunta di testo alle immagini è una funzionalità utile, adatta a vari scopi. Ecco alcune categorie:
- App di fotoritocco: come Canva, Adobe Express e PicLab ti consentono di modificare le foto in vari modi e l’aggiunta di testo è una funzionalità fondamentale.
- App di social media: come Instagram e Facebook dispongono di strumenti di modifica del testo integrati per le foto. Ciò ti consente di aggiungere didascalie, citazioni o altri messaggi direttamente all’interno dell’app prima della condivisione.
- Se stai creando progetti più complessi come volantini, poster o presentazioni, le app di progettazione grafica come Photoshop o GIMP offrono funzionalità avanzate di modifica del testo. Questi consentono un controllo preciso sul posizionamento, sulla formattazione e sugli effetti del testo.
- La cultura dei meme prospera grazie all’umorismo testo-immagine. Le app per la creazione di meme come Imgflip o Meme Generator forniscono modelli e strumenti di modifica progettati per creare immagini divertenti o con didascalie.
- La creazione di immagini accattivanti per le campagne di marketing spesso comporta l’aggiunta di testo alle immagini. Strumenti di marketing e pubblicitari come Spark Post o Stencil ti consentono di progettare post, volantini o annunci sui social media che incorporano testo in modo efficace.
- App didattiche: utilizza il testo sulle immagini per creare infografiche, guide allo studio o altri materiali didattici visivi.
Esistono molti motivi per aggiungere testo alle immagini, come aggiungere contesto a un’immagine, attirare l’attenzione dell’utente, creare un messaggio, ecc. Con Aspose.Font questa funzionalità può essere facilmente implementata nelle tue app basate su codice C#.
Per eseguire gli esempi necessari:
Aspose.Font per .NET API che è un'API di manipolazione e conversione di documenti ricca di funzionalità, potente e facile da usare per la piattaforma C#.
Aprire il gestore pacchetti NuGet, cercare Aspose.Font e installarlo. Puoi anche utilizzare il seguente comando dalla Console di gestione pacchetti.
Package Manager Console Command
PM> Install-Package Aspose.Font
Passaggi per visualizzare il testo sulle immagini C#:
Il frammento di codice fornito definisce una funzione denominata CustomDrawText che accetta vari argomenti per eseguire il rendering del testo su una bitmap utilizzando un carattere specificato. Ecco una ripartizione delle funzionalità:
- Recupera gli ID dei glifi per rappresentare una forma di carattere specifica all’interno del carattere.
- Imposta la risoluzione della bitmap di output.
- Riempi lo sfondo della bitmap con il pennello fornito.
- Imposta l’anti-aliasing per un rendering del testo più fluido e inizializza le variabili per il posizionamento dei glifi.
- Renderizza i testi utilizzando i glifi specificati utilizzando il renderer.
- Salva la bitmap finale con il testo disegnato nel file specificato.
Codice C# per scrivere testo sulle immagini
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. Che tipo di immagini posso usare per scriverci sopra il testo?
Le API funzionano meglio con immagini chiare e ad alta risoluzione. Evita foto sfocate o immagini con sfondi complessi, poiché possono influire sulla precisione del posizionamento del testo.
2. Posso personalizzare il carattere e lo stile del testo?
Sì, Aspose.Font ti consente di specificare stili di carattere, dimensioni e persino colori per la sovrapposizione di testo. Offre un output personalizzato del testo, ad esempio, quando vuoi comprimere, allungare, ruotare il testo in un angolo o qualcos’altro.
3. In che modo l’API gestisce il posizionamento del testo?
Offre posizionamenti predefiniti come l’allineamento al centro o in basso, ma offre anche un modo più avanzato (personalizzato) per convertire il testo in un’immagine utilizzando uno dei metodi RenderGlyph() della GlyphOutlineRenderer Class.