C#实现图片叠加,图片上嵌入文字,文字生成图片的方法
/// <summary>
/// 图片叠加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
string path = Server.MapPath(@"image/20160102.png");
System.Drawing.Image imgSrc = System.Drawing.Image.FromFile(path);
System.Drawing.Image imgWarter = System.Drawing.Image.FromFile(Server.MapPath(@"Image/bear.png"));
using (Graphics g = Graphics.FromImage(imgSrc))
{
g.DrawImage(imgWarter, new Rectangle(imgSrc.Width - imgWarter.Width, imgSrc.Height - imgWarter.Height, imgWarter.Width, imgWarter.Height), 0, 0, imgWarter.Width, imgWarter.Height, GraphicsUnit.Pixel);
}
string newpath = Server.MapPath(@"Image/WaterMark.bmp");
imgSrc.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);
this.image_Water.ImageUrl = @"~/Image/WaterMark.bmp";
}
/// <summary>
/// 图片上嵌入文字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
string path = Server.MapPath(@"image/20160102.png");
System.Drawing.Image imgSrc = System.Drawing.Image.FromFile(path);
using (Graphics g = Graphics.FromImage(imgSrc))
{
g.DrawImage(imgSrc, 0, 0, imgSrc.Width, imgSrc.Height);
using (Font f = new Font("宋体", 20))
{
using (Brush b = new SolidBrush(Color.Red))
{
string addText = "我的地盘我做主"; g.DrawString(addText, f, b, 100, 20);
}
}
}
string fontpath = Server.MapPath(@"image/FontMark.bmp");
imgSrc.Save(fontpath, System.Drawing.Imaging.ImageFormat.Bmp);
this.image_Water.ImageUrl = @"~/image/FontMark.bmp";
}
以下为文字生成图片//
/// <summary>
/// 把文字转换才Bitmap
/// </summary>
/// <param name="text"></param>
/// <param name="font"></param>
/// <param name="rect">用于输出的矩形,文字在这个矩形内显示,为空时自动计算</param>
/// <param name="fontcolor">字体颜色</param>
/// <param name="backColor">背景颜色</param>
/// <returns></returns>
private Bitmap TextToBitmap(string text, Font font, Rectangle rect, Color fontcolor, Color backColor)
{
Graphics g;
Bitmap bmp;
StringFormat format = new StringFormat(StringFormatFlags.NoClip);
if (rect == Rectangle.Empty)
{
bmp = new Bitmap(1, 1);
g = Graphics.FromImage(bmp);
//计算绘制文字所需的区域大小(根据宽度计算长度),重新创建矩形区域绘图
SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);
int width = (int)(sizef.Width + 1);
int height = (int)(sizef.Height + 1);
rect = new Rectangle(0, 0, width, height);
bmp.Dispose();
bmp = new Bitmap(width, height);
}
else
{
bmp = new Bitmap(rect.Width, rect.Height);
}
g = Graphics.FromImage(bmp);
//使用ClearType字体功能
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
g.FillRectangle(new SolidBrush(backColor), rect);
g.DrawString(text, font, Brushes.Black, rect, format);
return bmp;
}
protected void Button1_Click(object sender, EventArgs e)
{
string str = @"开始时间:2016-1-1" + "\r\n" + "结束时间:2017-1-1"+"\r\n"+ "沙尘天气等级:2"+"\r\n" + "PM10日均浓度最大值:2ug/m3"+"\r\n" + "影响范围:济南,青岛";
//得到Bitmap(传入Rectangle.Empty自动计算宽高)
Bitmap bmp = TextToBitmap(str, new Font("Arial", 16), Rectangle.Empty,Color.Black,Color.Wheat);
//保存到桌面save.jpg
string directory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);
bmp.Save(directory + "\\save.png", ImageFormat.Png);
}
转载于:https://www.cnblogs.com/wlming/p/10198213.html
C#实现图片叠加,图片上嵌入文字,文字生成图片的方法相关推荐
- C# 多个图片叠加,图片透明.
下载该示例代码 文章出处:http://www.cnblogs.com/kaixin110/archive/2007/08/04/841827.html using System; using Sys ...
- java 操作图片 叠加图片 覆盖
需求说明, 需要处理一个pdf文件, 将ocr识别出来的文字, 添加到word中, 将图片作为word背景图片, 也就实现了pdf转word功能. import java.awt.AlphaCompo ...
- [摘抄-Java-学习中]Java 图片叠加水印文字自动换行
从网上找到了前辈们写的代码,然后优化整理下,实现了图片叠加水印,也就是文字叠加,然后再实现根据总文字的长度进行自动换行叠加文字 importjavax.imageio.ImageIO; importj ...
- iOS中给图片加水印或文字的几种方法
最近项目中在做实名认证,要给图片添加水印,在网上找了一些博客,但是鱼龙混杂,首先说明下,有的博客说的方法实现了一下发现不可以.现在我就把我找的可以实现的几种方法贴在下边即可.以下方法我都亲自试过可以: ...
- Python PIL Image 4通道透明图片叠加(ARGB)
安装Package pip install Pillow pip install numpy RGBA与RGB的区别 一般图片(Jpeg)的呈现都是以3通道RGB显示出来 from PIL impor ...
- android图像处理系列之六--给图片添加边框(下)-图片叠加
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 前面介绍 ...
- android图像处理系列之六-- 给图片添加边框(下)-图片叠加
前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...
- java图片叠加_[原创]JAVA中图片上叠加文字的方法
--sunfruit JDK:1.3.x以上 功能:下面是一个简单在图片上面叠加文字的方法,有朋友如果有这方面的问题,就起个了解的作用 代码如下: import java.io.IOException ...
- C#图像处理:在图片上写字,文字位置居中问题
1.给图片上添加文字,位置的位置居中.左对齐.右对齐等 Font LabelFont = new Font("宋体", 14, FontStyle.Bold); //设置字体.字号 ...
最新文章
- 一说“并发”就想到“多线程”,那就局限了
- [每日一题] 11gOCP 1z0-053 :2013-09-29 Flashback Data Archive ...................................6...
- Linux查看swap使用情况小脚本
- Boost:具有bind和weak_ptr的function_equal扥测试程序
- win10c语言错误,win10打开程序提示错误状态0xc0000020的原因和解决方法
- 2022春节档新片预售总票房达1.08亿
- Python基础--03
- phpeclipse中操作svn
- Unicode 字符编码表
- figure字体 latex_Latex字体大小和样式
- Redis - NX与XX
- Intel 至强E5/E7 V4 CPU与至强可扩展CPU性能对比表
- 【C语言】函数番外篇——递归
- 时间序列中Hurst指数的计算(python代码)
- DSP28035 CLA配置与调试步骤
- [0x7FF95C3B7860] ANOMALY: use of REX.w is meaningless (default operand size is 64)
- 加缪——人生到底有什么意义?生命的意义就是生命本身
- oracle查看时间戳函数,oracle数据库实现获取时间戳的无参函数
- ESP-IDF Kconfig文件配置
- Failed to connect to github.com port 443: Operation timed out
热门文章
- 一个屌丝程序猿的人生(一百一十一)
- 浪潮as5300技术方案_浪潮AS5300/5500G2-F 存储
- 一辈子坚持只做一件事
- react setState特性
- Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in lib
- 循环神经网络进阶-------自动写歌词
- 工业机器人物料分拣实训装置
- MATLAB中用Application Complier生成可执行文件的步骤及相关注意事项
- 阿里开源(EasyExcel)---导出EXCEL
- 乐动力推手表管家:Android Wear的中国化之路