Tambahkan teks ke gambar
Solusi .NET API untuk menulis teks pada gambar
Aspose.Font untuk .NET adalah solusi komprehensif bagi pengembang yang bekerja dengan font di aplikasi .NET mereka. Ini menyederhanakan tugas seperti memuat, mengedit, mengonversi, dan menggunakan font untuk berbagai tujuan. Salah satu tujuannya adalah rendering teks. Solusinya menyediakan cara khusus untuk merender teks pada gambar menggunakan font tertentu, dengan mempertimbangkan kerning dan menawarkan kontrol atas berbagai aspek seperti warna latar belakang, warna teks, dan ukuran teks.
Ada banyak aplikasi yang menambahkan teks ke gambar merupakan fungsi yang berguna, melayani berbagai tujuan. Berikut beberapa kategori:
- Aplikasi pengeditan foto - seperti Canva, Adobe Express, dan PicLab memungkinkan Anda mengedit foto dengan berbagai cara, dan menambahkan teks adalah fitur inti.
- Aplikasi media sosial - seperti Instagram dan Facebook memiliki alat pengeditan teks bawaan untuk foto. Ini memungkinkan Anda menambahkan keterangan, kutipan, atau pesan lain langsung di dalam aplikasi sebelum membagikannya.
- Jika Anda membuat desain yang lebih kompleks seperti pamflet, poster, atau presentasi, aplikasi desain grafis seperti Photoshop atau GIMP menawarkan fitur pengeditan teks tingkat lanjut. Ini memungkinkan kontrol yang tepat atas penempatan teks, pemformatan, dan efek.
- Budaya meme berkembang pesat karena humor teks-di-gambar. aplikasi pembuatan meme seperti Imgflip atau Meme Generator menyediakan templat dan alat pengeditan yang dirancang untuk membuat gambar lucu atau diberi teks.
- Membuat visual yang menarik untuk kampanye pemasaran sering kali melibatkan penambahan teks ke gambar. Alat pemasaran dan periklanan seperti Spark Post atau Stencil memungkinkan Anda mendesain postingan media sosial, pamflet, atau iklan yang menggabungkan teks secara efektif.
- Aplikasi pendidikan - gunakan teks pada gambar untuk membuat infografis, panduan belajar, atau materi pembelajaran visual lainnya.
Ada banyak alasan untuk menambahkan teks ke gambar, seperti menambahkan konteks ke gambar, menarik perhatian pengguna, membuat pesan, dll. Dengan Aspose.Font fungsi ini dapat dengan mudah diimplementasikan ke dalam aplikasi berbasis kode C# Anda.
Untuk menjalankan contoh yang Anda perlukan:
Aspose.Font untuk .NET API yang merupakan API manipulasi dan konversi dokumen yang kaya fitur, kuat, dan mudah digunakan untuk platform C#.
Buka manajer paket NuGet, dan cari Aspose.Font dan instal. Anda juga dapat menggunakan perintah berikut dari Package Manager Console.
Package Manager Console Command
PM> Install-Package Aspose.Font
Langkah-langkah menampilkan teks pada gambar C#:
Cuplikan kode yang disediakan mendefinisikan fungsi yang disebut CustomDrawText yang menggunakan berbagai argumen untuk merender teks pada bitmap menggunakan font tertentu. Berikut rincian fungsinya:
- Ambil ID Glyph untuk mewakili bentuk karakter tertentu dalam font.
- Atur resolusi bitmap keluaran.
- Isi latar belakang bitmap dengan kuas yang disediakan.
- Atur anti-aliasing untuk rendering teks yang lebih halus dan inisialisasi variabel untuk pemosisian mesin terbang.
- Render teks menggunakan mesin terbang yang ditentukan menggunakan penyaji.
- Simpan bitmap terakhir dengan teks yang digambar ke file yang ditentukan.
Kode C# untuk menulis teks pada gambar
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. Jenis gambar apa yang dapat saya gunakan untuk menulis teks di atasnya?
API berfungsi paling baik dengan gambar yang jelas dan beresolusi tinggi. Hindari foto buram atau gambar dengan latar belakang yang rumit, karena dapat memengaruhi keakuratan penempatan teks.
2. Dapatkah saya menyesuaikan font dan gaya teks?
Ya, Aspose.Font memungkinkan Anda menentukan gaya font, ukuran, dan bahkan warna untuk hamparan teks Anda. Ia menawarkan keluaran teks yang disesuaikan, misalnya, saat Anda ingin mengompres, meregangkan, memutar teks secara bersamaan sudut, atau sesuatu yang lain.
3. Bagaimana API menangani penempatan teks?
Ini menawarkan penempatan yang telah ditentukan sebelumnya seperti perataan tengah atau bawah tetapi juga menawarkan cara yang lebih canggih (khusus) untuk mengonversi teks menjadi gambar menggunakan salah satu RenderGlyph() Metode Kelas GlyphOutlineRenderer.