Skip to content

Instantly share code, notes, and snippets.

@naveedmurtuza
Created September 17, 2013 20:27
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save naveedmurtuza/6600103 to your computer and use it in GitHub Desktop.
Save naveedmurtuza/6600103 to your computer and use it in GitHub Desktop.
Converting text to image (png) C#
/// <summary>
/// Converting text to image (png).
/// </summary>
/// <param name="text">text to convert</param>
/// <param name="font">Font to use</param>
/// <param name="textColor">text color</param>
/// <param name="maxWidth">max width of the image</param>
/// <param name="path">path to save the image</param>
public static void DrawText(String text, Font font, Color textColor,int maxWidth,String path)
{
//first, create a dummy bitmap just to get a graphics object
Image img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);
//measure the string to see how big the image needs to be
SizeF textSize = drawing.MeasureString(text, font,maxWidth);
//set the stringformat flags to rtl
StringFormat sf = new StringFormat();
//uncomment the next line for right to left languages
//sf.FormatFlags = StringFormatFlags.DirectionRightToLeft;
sf.Trimming = StringTrimming.Word;
//free up the dummy image and old graphics object
img.Dispose();
drawing.Dispose();
//create a new image of the right size
img = new Bitmap((int)textSize.Width, (int)textSize.Height);
drawing = Graphics.FromImage(img);
//Adjust for high quality
drawing.CompositingQuality = CompositingQuality.HighQuality;
drawing.InterpolationMode = InterpolationMode.HighQualityBilinear;
drawing.PixelOffsetMode = PixelOffsetMode.HighQuality;
drawing.SmoothingMode = SmoothingMode.HighQuality;
drawing.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
//paint the background
drawing.Clear(Color.Transparent);
//create a brush for the text
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, new RectangleF(0, 0, textSize.Width,textSize.Height), sf);
drawing.Save();
textBrush.Dispose();
drawing.Dispose();
img.Save(path,ImageFormat.Png);
img.Dispose();
}
@AamirNakhwa
Copy link

Thanks for the code.

@congloi
Copy link

congloi commented May 12, 2020

thanks much

@mihafreenode
Copy link

Thanks, great sample!

@jayawantkarale
Copy link

Thanks It working very well.

@Edebo
Copy link

Edebo commented Mar 17, 2023

working fine.Thanks

@aadi3124
Copy link

aadi3124 commented Jun 26, 2023

Hi,
I am trying to use this script in unity. I am trying to achieve the same. I want to create an image with my Text (string).
I am getting this error. Can any one please help me to resolve this.
Thanks in Advance!

DllNotFoundException: /Users/bokken/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null) System.Drawing.GDIPlus..cctor () (at <6237fc0e9e0548509b13786c3fddb07c>:0) Rethrow as TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height, System.Drawing.Imaging.PixelFormat format) (at <6237fc0e9e0548509b13786c3fddb07c>:0) System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height) (at <6237fc0e9e0548509b13786c3fddb07c>:0) (wrapper remoting-invoke-with-check) System.Drawing.Bitmap..ctor(int,int) TextToImage.DrawText (System.String text, System.Drawing.Font font, System.Drawing.Color textColor, System.Int32 maxWidth, System.String path) (at Assets/Scripts/Utils/TextToImage.cs:21)

@mihafreenode
Copy link

mihafreenode commented Jun 26, 2023

I have no experience with this, but this thread seems to deal with your problem:
https://discussions.unity.com/t/how-do-you-load-system-drawing-dll-and-gdiplus-dll-on-unity-mac/27248/4

Hi, I am trying to use this script in unity. I am trying to achieve the same. I want to create an image with my Text (string). I am getting this error. Can any one please help me to resolve this. Thanks in Advance!

DllNotFoundException: /Users/bokken/build/output/Unity-Technologies/mono/external/buildscripts/add_to_build_results/monodistribution/lib/libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null) System.Drawing.GDIPlus..cctor () (at <6237fc0e9e0548509b13786c3fddb07c>:0) Rethrow as TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height, System.Drawing.Imaging.PixelFormat format) (at <6237fc0e9e0548509b13786c3fddb07c>:0) System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height) (at <6237fc0e9e0548509b13786c3fddb07c>:0) (wrapper remoting-invoke-with-check) System.Drawing.Bitmap..ctor(int,int) TextToImage.DrawText (System.String text, System.Drawing.Font font, System.Drawing.Color textColor, System.Int32 maxWidth, System.String path) (at Assets/Scripts/Utils/TextToImage.cs:21)

@aadi3124
Copy link

@mihafreenode Thanks a lot for the reply. Sure! Let me check this thread.

@aadi3124
Copy link

aadi3124 commented Jun 26, 2023

Not worked the above thread solutions for me. any other solution anyone?

Now I am getting this error.

DllNotFoundException: /Library/Frameworks/Mono.framework/Versions/6.12.0/lib/libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null) System.Drawing.GDIPlus..cctor () (at <6237fc0e9e0548509b13786c3fddb07c>:0) Rethrow as TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height, System.Drawing.Imaging.PixelFormat format) (at <6237fc0e9e0548509b13786c3fddb07c>:0) System.Drawing.Bitmap..ctor (System.Int32 width, System.Int32 height) (at <6237fc0e9e0548509b13786c3fddb07c>:0) (wrapper remoting-invoke-with-check) System.Drawing.Bitmap..ctor(int,int) TextToImage.DrawText (System.String text, System.Drawing.Font font, System.Drawing.Color textColor, System.Int32 maxWidth, System.String path) (at

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment