1. 程式人生 > 程式設計 >c# 生成文字圖片和合並圖片的示例

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",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,width,height);
      //繪製圖片
      g.DrawString(text,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,imgBack.Width,imgBack.Height); //g.DrawImage(imgBack,相框寬,相框高);

      //g.FillRectangle(System.Drawing.Brushes.White,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,newW,newH),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);  

以上就是c# 生成文字圖片和合並圖片的示例的詳細內容,更多關於c# 生成文字圖片和合並圖片的資料請關注我們其它相關文章!