做小程序时遇到一个问题,用户在分享内容的时候,我需要生成一张带有内容的图片,那么如何把文字放到图片上,并生成一张新的图片呢?
先看效果图。

这是背景图

接下来上代码。

 /// <summary>/// 字符串放到图片上/// </summary>/// <param name="text"></param>public static string AddStringToImg(string text){int phWidth = 470;var basePath = Directory.GetCurrentDirectory();Console.WriteLine("获取根目录:" + basePath);TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);//用时间戳当做当前生成的文件名var timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();var savePath = string.Format("{0}/ShareImages/{1}.jpg", basePath, timeStamp);Console.WriteLine("保存图片名称地址:" + savePath);var tarFile = basePath+ "/ShareImages/bg.jpg";//读取一个bmp图片Image newImage = new Bitmap(tarFile);//新建一个画板Graphics g = Graphics.FromImage(newImage);//设置质量g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//画图g.DrawImage(newImage, 0, 0);#region 自定义字体//路径var strFontPath = basePath + "/simkai.ttf";//读取字体文件             PrivateFontCollection pfc = new PrivateFontCollection();pfc.AddFontFile(strFontPath);//实例化字体float fontSize = 20;Font font = new Font(pfc.Families[0], fontSize);#endregion// 自定义行间距SizeF fit = new SizeF(phWidth, font.Height+5);StringFormat fmt = StringFormat.GenericTypographic;int spacing = (int)(font.Height);//自定义字体颜色Brush brush = new SolidBrush(Color.FromArgb(65, 65, 65));int line = 5;//限制内容长度,超过的文字用...代替if (text.Length > 140){text = text.Substring(0, 140) + "...";}for (int ix = 0; ix < text.Length;){int chars, lines;g.MeasureString(text.Substring(ix), font, fit, fmt, out chars, out lines);g.DrawString(text.Substring(ix, chars), font, brush, 10, spacing * line);++line;ix += chars;}//保存图newImage.Save(savePath, ImageFormat.Jpeg);//释放资源g.Dispose();newImage.Dispose();return timeStamp;}

最后简单说两句,这里主要是用到C#的Image类和Brush类,注意调整好文字的位置和行间距即可,最后保存新图片,并释放资源即可。

C#把文字放到图片上相关推荐

  1. 鼠标放到图片上图片就变大

    CSS3的transform:scale()可以实现按比例放大或者缩小功能. CSS3的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对 ...

  2. HTML让文字在图片上显示的几种方法

    HTML让文字在图片上显示的几种方法 第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style= ...

  3. 鼠标放到图片上,图片缓慢变大,离开时,图片缓慢恢复

    给大家介绍一个小的动态效果,当鼠标放到图片上时,图片会变大,鼠标离开时,图片恢复,如果想简单一点,直接给图片加一个hover就可以了,但是这样效果不是很美观,我想让它有一个过度的实现效果,移除的时候也 ...

  4. 让文字在图片上滚动显示

    1.以源码方复制粘贴以下代码. 2.源码中背景图片地址和文字换成自己想要的. 3.回到设计窗口,调整文字和图片. 4.相关属于可以自己修改. <p align="center" ...

  5. css将文字置于图片上的方法

    我们在开发的时候,有大量的场景需要将文字至于图片之上,如图: 以上是将"空山新雨后,天气晚来秋"加在图片之上.对于大多数情况,我们都可以将图片作为背景图引入,但有些时候不能将图片作 ...

  6. 图片饱和度_做PPT时,文字放在图片上老是看不清,咋办?

    来自:跟我学个P(ID:PPTlearning) 作者:装P编辑部 很多人在做PPT的时候都喜欢用图片作为背景,但图片背景不是你想用就能用的,因为用得不好的话就会出现以下惨不忍睹的效果: 今天给大伙儿 ...

  7. html 文字在图片上显示

    第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style="background:ur ...

  8. HTML文字在图片上显示

    第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <span style="font-family: ...

  9. websocket实现聊天室应用,包括文字和图片上传

    谈websocket之前,我们可以先复习一下web通信的一些概念. 推(PUSH)和拉(PULL): 推和拉是Web通信的两种方式,从定义上来说它们最主要的区别在于方向性,推是服务器主动向客户端推送消 ...

最新文章

  1. 设计模式6+1大原则
  2. host 'xx' is not allowed to connect to this MySql server
  3. PHP 接收 UDP包_UDP详解(广播,组播)(转)
  4. 指针作为函数参数 进行内存释放 并置NULL
  5. 基于CUDA的VTI介质有限差分正演模拟与逆时偏移及ADCIGs提取
  6. CLR_via_C#.3rd 翻译[25.9 线程调度和优先权]
  7. Win7下修改Hosts文件
  8. 反射根据每一列的列名获取List T 中的列值
  9. Linq Join
  10. java三大特性之—封装
  11. 调节汉化版Eclipse的字体大小
  12. 计算机装配方案之游戏发烧型,5000元Intel八代i5-8500配RX580电脑配置 畅玩各类中大型游戏...
  13. Mysql 窗口函数
  14. Android系统的system/app和system/priv-app
  15. watch的immediate使用
  16. C++:实现量化期权交易CDS加密货币衍生品测试实例
  17. 免Root卸载系统预装应用
  18. RK3588 CPU GPU DDR NPU定频和性能模式设置
  19. sqlserver2000企业版,个人版,开发版,标准版的安装
  20. java 内部接口 内部类_Java接口/内部类

热门文章

  1. 淘宝双11大数据分析(环境篇)
  2. 微信小程序小技巧系列《一》幻灯片,tab导航切换
  3. 防止excel单元格有效性验证因被粘贴而失效
  4. 红颜弹指老,刹那芳华(转载 作者:程灵素)
  5. 结合泛函极值_泛函极值及变分法讲义.doc
  6. JS封装数组API push,pop,shift,unshift,sort, reverse
  7. FTP服务器的搭建与配置
  8. Mac用命令行在访达中打开指定目录
  9. Java经典算法题目(兔子题)及题目分析
  10. 写作真的可以赚钱吗?