เพิ่มข้อความลงในรูปภาพ

.NET API Solution สำหรับเขียนข้อความบนภาพ

 

Aspose.Font สำหรับ .NET เป็นโซลูชันที่ครอบคลุมสำหรับนักพัฒนาที่ทำงานกับแบบอักษรในแอปพลิเคชัน .NET ของตน ช่วยให้งานต่างๆ เช่น การโหลด แก้ไข การแปลง และการใช้แบบอักษรเพื่อวัตถุประสงค์ต่างๆ ง่ายขึ้น จุดประสงค์ประการหนึ่งคือการแสดงข้อความ โซลูชันนี้มอบวิธีการแบบกำหนดเองในการแสดงข้อความบนรูปภาพโดยใช้แบบอักษรเฉพาะ โดยพิจารณาการจัดช่องไฟและเสนอการควบคุมด้านต่างๆ เช่น สีพื้นหลัง สีข้อความ และขนาดข้อความ

มีแอปมากมายที่การเพิ่มข้อความลงในรูปภาพเป็นฟังก์ชันที่มีประโยชน์ ซึ่งรองรับวัตถุประสงค์ต่างๆ นี่คือบางหมวดหมู่:

  • แอปแก้ไขรูปภาพ - เช่น Canva, Adobe Express และ PicLab ช่วยให้คุณสามารถแก้ไขรูปภาพได้หลายวิธี และการเพิ่มข้อความเป็นคุณสมบัติหลัก
  • แอปโซเชียลมีเดีย - เช่น Instagram และ Facebook มีเครื่องมือแก้ไขข้อความสำหรับรูปภาพในตัว ซึ่งจะทำให้คุณสามารถเพิ่มคำบรรยาย คำพูด หรือข้อความอื่นๆ ได้โดยตรงภายในแอปก่อนแชร์
  • หากคุณกำลังสร้างการออกแบบที่ซับซ้อนมากขึ้น เช่น ใบปลิว โปสเตอร์ หรืองานนำเสนอ แอปออกแบบกราฟิก เช่น Photoshop หรือ GIMP นำเสนอคุณสมบัติการแก้ไขข้อความขั้นสูง สิ่งเหล่านี้ช่วยให้สามารถควบคุมการจัดวางข้อความ การจัดรูปแบบ และเอฟเฟกต์ได้อย่างแม่นยำ
  • วัฒนธรรม Meme เติบโตได้ด้วยอารมณ์ขันแบบข้อความบนภาพ แอปสร้างมีม เช่น Imgflip หรือ Meme Generator มีเทมเพลตและเครื่องมือแก้ไขที่ออกแบบมาเพื่อการสร้างภาพที่ตลกหรือมีคำบรรยาย
  • การสร้างภาพที่สะดุดตาสำหรับแคมเปญการตลาดมักเกี่ยวข้องกับการเพิ่มข้อความลงในรูปภาพ เครื่องมือทางการตลาดและการโฆษณา เช่น Spark Post หรือ Stencil ช่วยให้คุณสามารถออกแบบโพสต์บนโซเชียลมีเดีย ใบปลิว หรือโฆษณาที่รวมข้อความไว้ได้อย่างมีประสิทธิภาพ
  • แอปเพื่อการศึกษา - ใช้ข้อความบนรูปภาพเพื่อสร้างอินโฟกราฟิก คู่มือการเรียนรู้ หรือสื่อการเรียนรู้จากภาพอื่นๆ

มีเหตุผลหลายประการในการเพิ่มข้อความลงในรูปภาพ เช่น การเพิ่มบริบทให้กับรูปภาพ ดึงดูดความสนใจของผู้ใช้ การสร้างข้อความ ฯลฯ ด้วย Aspose.Font ฟังก์ชันนี้สามารถนำไปใช้กับแอปที่ใช้โค้ด C# ของคุณได้อย่างง่ายดาย

หากต้องการรันตัวอย่างที่คุณต้องการ:

  • Aspose.Font สำหรับ .NET API ซึ่งเป็น API การจัดการและการแปลงเอกสารที่มีฟีเจอร์หลากหลาย ทรงพลัง และใช้งานง่ายสำหรับแพลตฟอร์ม C#

  • เปิดตัวจัดการแพ็คเกจ NuGet และค้นหา Aspose.Font และติดตั้ง คุณอาจใช้คำสั่งต่อไปนี้จาก Package Manager Console

Package Manager Console Command


    PM> Install-Package Aspose.Font

ขั้นตอนในการแสดงข้อความบนรูปภาพ C#:

ข้อมูลโค้ดที่ให้มาจะกำหนดฟังก์ชันที่เรียกว่า CustomDrawText ซึ่งรับอาร์กิวเมนต์ต่างๆ เพื่อแสดงข้อความบนบิตแมปโดยใช้แบบอักษรที่ระบุ นี่คือรายละเอียดของฟังก์ชันการทำงาน:

  1. ดึงข้อมูล ID ของ Glyphs เพื่อแสดงรูปร่างอักขระเฉพาะภายในแบบอักษร
  2. ตั้งค่าความละเอียดของบิตแมปเอาต์พุต
  3. เติมพื้นหลังของบิตแมปด้วยแปรงที่ให้มา
  4. ตั้งค่าการป้องกันนามแฝงเพื่อการแสดงข้อความที่ราบรื่นยิ่งขึ้น และเริ่มต้นตัวแปรสำหรับการวางตำแหน่งสัญลักษณ์
  5. แสดงผลข้อความโดยใช้ร่ายมนตร์ที่ระบุโดยใช้ตัวแสดงผล
  6. บันทึกบิตแมปสุดท้ายพร้อมข้อความที่วาดลงในไฟล์ที่ระบุ

รหัส C# สำหรับเขียนข้อความบนภาพ

    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. ฉันสามารถใช้รูปภาพประเภทใดในการเขียนข้อความลงไปได้

API ทำงานได้ดีที่สุดกับภาพที่คมชัดและมีความละเอียดสูง หลีกเลี่ยงภาพถ่ายที่พร่ามัวหรือภาพที่มีพื้นหลังที่ซับซ้อน เนื่องจากสิ่งเหล่านี้อาจส่งผลต่อความแม่นยำของการจัดวางข้อความ

2. ฉันสามารถปรับแต่งแบบอักษรและสไตล์ของข้อความได้หรือไม่

ใช่ Aspose.Font อนุญาตให้คุณระบุลักษณะแบบอักษร ขนาด และแม้กระทั่งสีสำหรับการซ้อนทับข้อความของคุณ โดยจะให้ผลลัพธ์ข้อความที่กำหนดเอง เช่น เมื่อคุณต้องการบีบอัด ยืด หมุนข้อความที่ มุมหรืออย่างอื่น

3. API จัดการตำแหน่งข้อความอย่างไร

มีตำแหน่งที่กำหนดไว้ล่วงหน้า เช่น การจัดกึ่งกลางหรือด้านล่าง แต่ยังเสนอวิธีการขั้นสูง (กำหนดเอง) ในการแปลงข้อความเป็นรูปภาพโดยใช้วิธีใดวิธีหนึ่ง RenderGlyph() ของ GlyphOutlineRenderer Class