c# 生成文字图片和合并图片的示例

作者:李志强 时间:2023-03-28 19:25:13 

生成文字图片:


/// <summary>
   /// 生成文字图片
   /// </summary>
   /// <param name="text"></param>
   /// <param name="isBold"></param>
   /// <param name="fontSize"></param>
   public Image CreateImage(string text, bool isBold, int fontSize)
   {
     int wid = 400;
     int high = 200;
     Font font;
     if (isBold)
     {
       font = new Font("Arial", fontSize, FontStyle.Bold);

}
     else
     {
       font = new Font("Arial", fontSize, FontStyle.Regular);

}
     //绘笔颜色
     SolidBrush brush = new SolidBrush(Color.Black);
     StringFormat format = new StringFormat(StringFormatFlags.NoClip);
     Bitmap image = new Bitmap(wid, high);
     Graphics g = Graphics.FromImage(image);
     SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);//得到文本的宽高
     int width = (int)(sizef.Width + 1);
     int height = (int)(sizef.Height + 1);
     image.Dispose();
     image = new Bitmap(width, height);
     g = Graphics.FromImage(image);
     g.Clear(Color.White);//透明

RectangleF rect = new RectangleF(0, 0, width, height);
     //绘制图片
     g.DrawString(text, font, brush, rect);
     //释放对象
     g.Dispose();
     return image;
   }

合并图片:


/// <summary>
   /// 合并图片
   /// </summary>
   /// <param name="imgBack"></param>
   /// <param name="img"></param>
   /// <returns></returns>
   public static Bitmap CombinImage(Image imgBack, Image img, int xDeviation = 0, int yDeviation = 0)
   {

Bitmap bmp = new Bitmap(imgBack.Width, imgBack.Height + img.Height);

Graphics g = Graphics.FromImage(bmp);
     g.Clear(Color.White);
     g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height); //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);

//g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框

//g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);

g.DrawImage(img, imgBack.Width / 2 - img.Width / 2 + xDeviation, imgBack.Height + yDeviation, img.Width, img.Height);
     GC.Collect();
     return bmp;
   }

/// <summary>
   /// Resize图片
   /// </summary>
   /// <param name="bmp">原始Bitmap</param>
   /// <param name="newW">新的宽度</param>
   /// <param name="newH">新的高度</param>
   /// <param name="mode">保留着,暂时未用</param>
   /// <returns>处理以后的图片</returns>
   public static Image ResizeImage(Image bmp, int newW, int newH, int mode)
   {
     try
     {
       Image b = new Bitmap(newW, newH);
       Graphics g = Graphics.FromImage(b);

// 插值算法的质量
       g.InterpolationMode = InterpolationMode.HighQualityBicubic;
       g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height),
             GraphicsUnit.Pixel);
       g.Dispose();
       return b;
     }
     catch
     {
       return null;
     }
   }

MemoryStream保存到图片


    Bitmap bmp = CombinImage(ms, img1);
    MemoryStream ms = new MemoryStream();
    bmp.Save(ms, ImageFormat.Png);

来源:https://www.cnblogs.com/stulzq/p/6137715.html

标签:c#,图片
0
投稿

猜你喜欢

  • Android用户注册界面简单设计

    2023-07-13 02:59:50
  • 浅谈spring方法级参数校验(@Validated)

    2021-06-25 00:43:25
  • fastjson转换对象实体@JsonProperty不生效问题及解决

    2023-10-07 00:13:51
  • web压力测试工具_动力节点Java 学院整理

    2022-03-25 00:48:21
  • 基于C#动手实现网络服务器Web Server

    2023-01-21 20:13:28
  • C#开发WinForm之DataGridView开发详解

    2023-06-25 06:31:35
  • Android通过代码控制ListView上下滚动的方法

    2022-06-29 03:07:57
  • Android Studio使用小技巧:提取方法代码片段

    2023-11-14 19:35:20
  • C#实现自定义单选和复选按钮样式

    2022-07-22 04:01:41
  • Idea中SpringBoot多模块项目的建立实现

    2023-11-08 07:52:34
  • 详解Android的两种事件处理机制

    2023-10-05 23:37:20
  • SpringBean依赖和三级缓存的案例讲解

    2023-06-25 09:33:22
  • C语言数据结构之二叉树的非递归后序遍历算法

    2021-12-23 07:10:52
  • java数据结构和算法中哈希表知识点详解

    2023-08-05 08:28:11
  • C#动态编译并执行字符串样例

    2022-02-10 22:26:53
  • springboot @Async 注解如何实现方法异步

    2023-11-18 18:16:03
  • java使用Jdom实现xml文件写入操作实例

    2022-09-30 02:38:23
  • Java多线程常见案例分析线程池与单例模式及阻塞队列

    2022-06-01 06:42:42
  • C#多线程系列之任务基础(一)

    2022-12-09 04:48:22
  • Android Fragment动态创建详解及示例代码

    2023-04-26 00:25:33
  • asp之家 软件编程 m.aspxhome.com