เพิ่มข้อความลงในรูปภาพ
.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 ซึ่งรับอาร์กิวเมนต์ต่างๆ เพื่อแสดงข้อความบนบิตแมปโดยใช้แบบอักษรที่ระบุ นี่คือรายละเอียดของฟังก์ชันการทำงาน:
- ดึงข้อมูล ID ของ Glyphs เพื่อแสดงรูปร่างอักขระเฉพาะภายในแบบอักษร
- ตั้งค่าความละเอียดของบิตแมปเอาต์พุต
- เติมพื้นหลังของบิตแมปด้วยแปรงที่ให้มา
- ตั้งค่าการป้องกันนามแฝงเพื่อการแสดงข้อความที่ราบรื่นยิ่งขึ้น และเริ่มต้นตัวแปรสำหรับการวางตำแหน่งสัญลักษณ์
- แสดงผลข้อความโดยใช้ร่ายมนตร์ที่ระบุโดยใช้ตัวแสดงผล
- บันทึกบิตแมปสุดท้ายพร้อมข้อความที่วาดลงในไฟล์ที่ระบุ
รหัส 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