Metni resme ekleme

Resimlere metin yazmak için .NET API Çözümü

 

Aspose.Font for .NET, .NET uygulamalarında yazı tipleri ile çalışan geliştiriciler için kapsamlı bir çözümdür. Fontları yükleme, düzenleme, dönüştürme ve farklı amaçlarla kullanma gibi görevleri basitleştirir. Bu amaçlardan biri metin oluşturmadır. Çözüm, karakter aralığını göz önünde bulundurarak ve arka plan rengi, metin rengi ve metin boyutu gibi çeşitli yönler üzerinde kontrol sunarak belirli bir yazı tipini kullanarak bir görüntü üzerindeki metni oluşturmak için özel bir yol sağlar.

Resimlere metin eklemenin yararlı bir işlevsellik olduğu ve çeşitli amaçlara hizmet eden birçok uygulama vardır. İşte bazı kategoriler:

  • Fotoğraf düzenleme uygulamaları - Canva, Adobe Express ve PicLab gibi, fotoğrafları çeşitli şekillerde düzenlemenize olanak tanır ve metin eklemek temel bir özelliktir.
  • Sosyal medya uygulamaları - Instagram ve Facebook gibi fotoğraflar için yerleşik metin düzenleme araçlarına sahiptir. Bu, paylaşmadan önce doğrudan uygulamanın içine başlıklar, alıntılar veya diğer mesajları eklemenizi sağlar.
  • El ilanları, posterler veya sunumlar gibi daha karmaşık tasarımlar oluşturuyorsanız Photoshop veya GIMP gibi grafik tasarım uygulamaları gelişmiş metin düzenleme özellikleri sunar. Bunlar, metin yerleştirme, biçimlendirme ve efektler üzerinde hassas kontrol sağlar.
  • Meme kültürü, resim üzerine metin mizahıyla gelişir. Imgflip veya Meme Generator gibi meme oluşturma uygulamaları, komik veya altyazılı görüntüler oluşturmak için tasarlanmış şablonlar ve düzenleme araçları sağlar.
  • Pazarlama kampanyaları için göz alıcı görseller oluşturmak genellikle görsellere metin eklemeyi içerir. Spark Post veya Stencil gibi pazarlama ve reklamcılık araçları, metinleri etkili bir şekilde birleştiren sosyal medya gönderileri, el ilanları veya reklamlar tasarlamanıza olanak tanır.
  • Eğitici uygulamalar - Infographics, çalışma kılavuzları veya diğer görsel öğrenme materyalleri oluşturmak için görsellerin üzerindeki metinleri kullanın.

Resimlere metin eklemenin, resme bağlam eklemek, kullanıcının dikkatini çekmek, mesaj oluşturmak vb. gibi birçok nedeni vardır. Aspose.Font ile bu işlevsellik, C# kod tabanlı uygulamalarınıza kolayca uygulanabilir.

İhtiyacınız olan örnekleri çalıştırmak için:

  • Aspose.Font for .NET API, C# platformu için zengin özelliklere sahip, güçlü ve kullanımı kolay bir belge işleme ve dönüştürme API'sidir.

  • NuGet paket yöneticisini açın ve Aspose.Font'u arayın ve yükleyin. Aşağıdaki komutu Paket Yönetici Konsolundan da kullanabilirsiniz.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Görüntülerdeki metni görüntüleme adımları C#:

Sağlanan kod parçacığı, belirtilen bir yazı tipini kullanarak bir bitmap üzerindeki metni oluşturmak için çeşitli argümanlar alan CustomDrawText adlı bir işlevi tanımlar. İşte işlevselliğin bir dökümü:

  1. Yazı tipi içindeki belirli bir karakter şeklini temsil eden Gliflerin kimliklerini alın.
  2. Çıktı bitmap’in çözünürlüğünü ayarlayın.
  3. Bitmap’in arka planını sağlanan fırçayla doldurun.
  4. Daha düzgün metin oluşturma için kenar yumuşatma özelliğini ayarlayın ve glif konumlandırma için değişkenleri başlatın.
  5. İşleyiciyi kullanarak belirtilen glifleri kullanarak metinleri işleyin.
  6. Çizilen metni içeren son bitmap’i belirtilen dosyaya kaydedin.

Resimlere metin yazmak için C# kodu

    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. Üzerine metin yazmak için ne tür görseller kullanabilirim?

API’ler net, yüksek çözünürlüklü görsellerle en iyi şekilde çalışır. Bulanık fotoğraflardan veya karmaşık arka plana sahip görsellerden kaçının çünkü bunlar metin yerleşiminin doğruluğunu etkileyebilir.

2. Metin yazı tipini ve stilini özelleştirebilir miyim?

Evet, Aspose.Font, metin kaplamanız için yazı tipi stillerini, boyutlarını ve hatta renkleri belirtmenize olanak tanır. Örneğin, metni belirli bir hızda sıkıştırmak, uzatmak, döndürmek istediğinizde, metnin özelleştirilmiş çıktısını sunar. açı ya da başka bir şey.

3. API metin yerleşimini nasıl yönetiyor?

Ortaya veya alta hizalama gibi önceden tanımlanmış yerleşimler sunar, ancak aynı zamanda GlyphOutlineRenderer Sınıfının RenderGlyph() Yöntemlerinden birini kullanarak metni bir görüntüye dönüştürmenin daha gelişmiş (özel) bir yolunu da sunar.