生成文字图片:

         /// <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 = ;
int high = ;
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 + );
int height = (int)(sizef.Height + );
image.Dispose();
image = new Bitmap(width, height);
g = Graphics.FromImage(image);
g.Clear(Color.White);//透明 RectangleF rect = new RectangleF(, , 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 = , int yDeviation = )
{ 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, 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 / - img.Width / + 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(, , newW, newH), new Rectangle(, , 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#一些常用的图片操作方法:生成文字图片 合并图片等的更多相关文章

  1. php生成文字水印和图片水印

    生成文字水印   //文字水印 /*打开图片*/ //1.配置图片路径 $src = "4.jpg"; //2.获取图片的信息(得到图片的基本信息) $info = getimag ...

  2. php图片上面写文字,输出图片

    <?php /* param $image 图象资源 param size 字体大小 param angle 字体输出角度 param showX 输出位置x坐标 param showY 输出位 ...

  3. qrcode.js的识别解析二维码图片和生成二维码图片

    qrcode只通过前端就能生成二维码和解析二维码图片, 首先要引入文件qrcode.js,下载地址为:http://static.runoob.com/download/qrcodejs-04f46c ...

  4. 如何大批量的识别图片上的文字,批量图片文字识别OCR软件系统

    软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题 批量图片OCR(批量名片识别.批量照片识别等)识别,然后就下来研究了一下,下面是成果 使用步骤:打开单个图片识别,导入文件夹 ...

  5. PHP合成图片、生成文字、居中对齐、画线、矩形、三角形、多边形、图片抗锯齿、不失真 高性能源码示例

    function generateImg($source, $text1, $text2, $text3, $font = './msyhbd.ttf') { $date = '' . date ( ...

  6. canvas在图片上生成文字

    newImage(text) {                 // 生成图片                 var imageBox = document.getElementById(&quo ...

  7. UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)

    在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求.第一种方式是通过设置按钮中图片文字的偏移量.通过方法setTitleEdgeInsets和setImageEdgeInsets实现 代码如下: ...

  8. Thinkphp图片水印和文字水印

    1.Thinkphp图像处理 在TP框架中,我们经常用到图片上传,我最近写了很多关于图片上传的文章,thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成等文章,今天写一下关于图 ...

  9. CSS一个属性,让图片后的文字垂直居中,效果看得见

    困扰我多年的疑难,终于解决了.哈哈哈,太爽了 背景 页面经常遇到,图片后面的文字显示在图片的中间部位,也就是说文字图片垂直居中. <div class="banner"> ...

随机推荐

  1. Mongodb的入门(8)mongodb事物分析

    老生常谈:<在前面博客中也介绍过> mongodb官网:https://docs.mongodb.com/manual/introduction/ mongodb:官网上是这样定义的Mon ...

  2. mac挂载分区包括EFI 或者任何隐藏分区

    1.mac终端下的diskutil命令是用来操作磁盘的 diskutil list #显示当前pc所有的磁盘 2.例如我们要挂载u盘中的efi分区 ,确定你的efi分区的 identified 我的是 ...

  3. LeetCode题解之Binary Tree Level Order Traversal II

    1.题目描述 2.题目分析 先遍历,再反转. 3.代码 vector<vector<int>> levelOrderBottom(TreeNode* root) { vecto ...

  4. 【转】如何将MySQL数据目录更改为CentOS 7上的新位置

    本文转载自:http://www.leftso.com/blog/362.html 介绍 数据库随着时间的推移而增长,有时超过了文件系统的空间.当它们与操作系统的其他部分位于同一分区上时,也可能遇到I ...

  5. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  6. tcpcopy用法

    目标: 将线上服务lighttpd(8000端口)的流量引流到线下测试机 一.测试机: tcpcopy-server,接收流量 modprobe ip_queue iptables -L iptabl ...

  7. 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?

    一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...

  8. js入门-文本框输入特定内容控制另一个文本框

    在填写表单时,有时需要某些文本框隐藏,当一文本框输入特定内容时才会显示隐藏的文本框,这一功能可以用onchange事件或oninput事件实现.下面对比下两种方法实现的区别: onchange()定义 ...

  9. 【PAT】B1054 求平均值(20 分)

    一开始就想用sscanf和sprintf去实现,但是没有设计好思路,卡住了. 看了网上别人的博客,都是用的很复杂的逻辑分别判断,一言不合就七八十航代码 今天早上看了柳神的代码,发现跟自己的思路一样,开 ...

  10. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...