Adja hozzá a szöveget egy képhez
.NET API megoldás szöveg írására képekre
Az Aspose.Font for .NET egy átfogó megoldás a .NET-alkalmazásaikban betűtípusokkal dolgozó fejlesztők számára. Leegyszerűsíti az olyan feladatokat, mint a betöltés, a szerkesztés, a konvertálás és a betűtípusok különböző célokra történő használata. Az egyik ilyen cél a szövegmegjelenítés. A megoldás egyéni módot biztosít a kép szövegének egy adott betűtípussal történő megjelenítésére, figyelembe véve a levágást, és különféle szempontok, például a háttérszín, a szöveg színe és a szövegméret szabályozását kínálja.
Számos olyan alkalmazás létezik, ahol a képekhez szöveg hozzáadása hasznos funkció, amely különféle célokat szolgál. Íme néhány kategória:
- Fotószerkesztő alkalmazások – például a Canva, az Adobe Express és a PicLab lehetővé teszik a fényképek különféle módokon történő szerkesztését, és a szöveg hozzáadása alapvető funkció.
- Közösségi médiaalkalmazások – például az Instagram és a Facebook beépített szövegszerkesztő eszközökkel rendelkezik a fényképekhez. Ezzel a megosztás előtt közvetlenül az alkalmazáson belül adhat hozzá feliratokat, idézeteket vagy egyéb üzeneteket.
- Ha összetettebb terveket, például szórólapokat, posztereket vagy prezentációkat készít, a grafikus tervező alkalmazások, például a Photoshop vagy a GIMP fejlett szövegszerkesztő funkciókat kínálnak. Ezek lehetővé teszik a szövegelhelyezés, a formázás és az effektusok pontos szabályozását.
- A mémkultúra virágzik a szöveg a képre humorral. A mémkészítő alkalmazások, mint például az Imgflip vagy a Meme Generator, sablonokat és szerkesztőeszközöket biztosítanak vicces vagy feliratos képek készítéséhez.
- A marketingkampányok szemet gyönyörködtető látványelemeinek létrehozása gyakran azt jelenti, hogy szöveget kell hozzáadni a képekhez. Marketing- és hirdetési eszközök, mint például a Spark Post vagy a Stencil, lehetővé teszik a közösségi médiában olyan bejegyzések, szórólapok vagy hirdetések tervezését, amelyek hatékonyan tartalmaznak szöveget.
- Oktatási alkalmazások – használjon szöveget a képeken infografikák, tanulmányi útmutatók vagy egyéb vizuális tananyagok létrehozásához.
Számos oka van annak, hogy szöveget adjunk a képekhez, például kontextus hozzáadása a képhez, a felhasználó figyelmének felkeltése, üzenet létrehozása stb. Az Aspose.Font segítségével ez a funkció könnyen beépíthető C# kód alapú alkalmazásaiba.
A példák futtatásához szüksége lesz:
Aspose.Font for .NET API, amely funkciókban gazdag, hatékony és könnyen használható dokumentumkezelési és -konverziós API C# platformhoz.
Nyissa meg a NuGet csomagkezelőt, keresse meg az Aspose.Font elemet, és telepítse. A következő parancsot is használhatja a Package Manager konzolból.
Package Manager Console Command
PM> Install-Package Aspose.Font
Lépések a szöveg megjelenítéséhez a C# képeken:
A megadott kódrészlet egy CustomDrawText nevű függvényt határoz meg, amely különböző argumentumokat vesz igénybe a szöveg megjelenítéséhez egy bittérképen egy megadott betűtípus használatával. Íme a funkciók lebontása:
- Kérje le a karakterjelek azonosítóit, hogy egy adott karakter alakzatot jelenítsen meg a betűtípuson belül.
- Állítsa be a kimeneti bitkép felbontását.
- Töltse ki a bittérkép hátterét a mellékelt ecsettel.
- Állítsa be az élsimítást a simább szövegmegjelenítés érdekében, és inicializálja a változókat a karakterjelek pozicionálásához.
- Szöveg megjelenítése a megadott karakterjelekkel a renderer segítségével.
- Mentse el a végleges bitképet a rajzolt szöveggel a megadott fájlba.
C# kód szöveg írásához a képekre
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. Milyen képekkel írhatok rá szöveget?
Az API-k a legjobban tiszta, nagy felbontású képekkel működnek. Kerülje az elmosódott fényképeket vagy az összetett hátterű képeket, mivel ezek befolyásolhatják a szöveg elhelyezésének pontosságát.
2. Testreszabhatom a szöveg betűtípusát és stílusát?
Igen, az Aspose.Font lehetővé teszi betűstílusok, -méretek és -színek megadását a szövegfedéshez. A szöveg testreszabott kimenetét kínálja, például ha tömöríteni, nyújtani vagy elforgatni szeretné a szöveget szög, vagy valami más.
3. Hogyan kezeli az API a szövegelhelyezést?
Előre meghatározott elhelyezéseket kínál, például középre vagy alulra igazítást, de fejlettebb (egyéni) módot is kínál a szöveg képpé konvertálására a GlyphOutlineRenderer osztály RenderGlyph() metódusaival.