zoukankan      html  css  js  c++  java
  • C#一些常用的图片操作方法:生成文字图片 合并图片等

    生成文字图片:

     1         /// <summary>
     2         /// 生成文字图片
     3         /// </summary>
     4         /// <param name="text"></param>
     5         /// <param name="isBold"></param>
     6         /// <param name="fontSize"></param>
     7         public Image CreateImage(string text, bool isBold, int fontSize)
     8         {
     9             int wid = 400;
    10             int high = 200;
    11             Font font;
    12             if (isBold)
    13             {
    14                 font = new Font("Arial", fontSize, FontStyle.Bold);
    15 
    16             }
    17             else
    18             {
    19                 font = new Font("Arial", fontSize, FontStyle.Regular);
    20 
    21             }
    22             //绘笔颜色
    23             SolidBrush brush = new SolidBrush(Color.Black);
    24             StringFormat format = new StringFormat(StringFormatFlags.NoClip);
    25             Bitmap image = new Bitmap(wid, high);
    26             Graphics g = Graphics.FromImage(image);
    27             SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);//得到文本的宽高
    28             int width = (int)(sizef.Width + 1);
    29             int height = (int)(sizef.Height + 1);
    30             image.Dispose();
    31             image = new Bitmap(width, height);
    32             g = Graphics.FromImage(image);
    33             g.Clear(Color.White);//透明
    34 
    35             RectangleF rect = new RectangleF(0, 0, width, height);
    36             //绘制图片
    37             g.DrawString(text, font, brush, rect);
    38             //释放对象
    39             g.Dispose();
    40             return image;
    41         }

    合并图片:

     1         /// <summary>  
     2         /// 合并图片  
     3         /// </summary>  
     4         /// <param name="imgBack"></param>  
     5         /// <param name="img"></param>  
     6         /// <returns></returns>  
     7         public static Bitmap CombinImage(Image imgBack, Image img, int xDeviation = 0, int yDeviation = 0)
     8         {
     9 
    10             Bitmap bmp = new Bitmap(imgBack.Width, imgBack.Height + img.Height);
    11 
    12             Graphics g = Graphics.FromImage(bmp);
    13             g.Clear(Color.White);
    14             g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height); //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);     
    15 
    16             //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框    
    17 
    18             //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);    
    19 
    20             g.DrawImage(img, imgBack.Width / 2 - img.Width / 2 + xDeviation, imgBack.Height + yDeviation, img.Width, img.Height);
    21             GC.Collect();
    22             return bmp;
    23         }    
     1         /// <summary>  
     2         /// Resize图片  
     3         /// </summary>  
     4         /// <param name="bmp">原始Bitmap</param>  
     5         /// <param name="newW">新的宽度</param>  
     6         /// <param name="newH">新的高度</param>  
     7         /// <param name="mode">保留着,暂时未用</param>  
     8         /// <returns>处理以后的图片</returns>  
     9         public static Image ResizeImage(Image bmp, int newW, int newH, int mode)
    10         {
    11             try
    12             {
    13                 Image b = new Bitmap(newW, newH);
    14                 Graphics g = Graphics.FromImage(b);
    15 
    16                 // 插值算法的质量    
    17                 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    18                 g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height),
    19                             GraphicsUnit.Pixel);
    20                 g.Dispose();
    21                 return b;
    22             }
    23             catch
    24             {
    25                 return null;
    26             }
    27         }    

    MemoryStream保存到图片

    1         Bitmap bmp = CombinImage(ms, img1);
    2         MemoryStream ms = new MemoryStream();
    3         bmp.Save(ms, ImageFormat.Png);        
  • 相关阅读:
    dapper+linq+json+ztree构建树
    ubuntu,从一个新用户,要转到新用户的命令行操作
    OC本学习笔记Foundatio框架集
    无法Debug SQL: Unable to start T-SQL Debugging. Could not attach to SQL Server process on
    Struts2 + uploadify 多文件上传完整的例子!
    How use Instruments and display the console in Command Lines applications
    Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
    Android ActionBar详解(一):ActionBar概述及其创建
    Android Fragment详解(六):Fragement示例
    Android Fragment详解(五):Fragment与Activity通讯
  • 原文地址:https://www.cnblogs.com/stulzq/p/6137715.html
Copyright © 2011-2022 走看看