软件编程
位置:首页>> 软件编程>> C#编程>> c# 生成文字图片和合并图片的示例

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

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

标签:c#,图片

生成文字图片:


/// <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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com