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:

  1. Kérje le a karakterjelek azonosítóit, hogy egy adott karakter alakzatot jelenítsen meg a betűtípuson belül.
  2. Állítsa be a kimeneti bitkép felbontását.
  3. Töltse ki a bittérkép hátterét a mellékelt ecsettel.
  4. Á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.
  5. Szöveg megjelenítése a megadott karakterjelekkel a renderer segítségével.
  6. 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.