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

时间: 2024-08-29 08:34:03

C#实现图片叠加,图片上嵌入文字,文字生成图片的方法的相关文章

上传漏洞之生成图片木马方法

1-GIF89a 2-copy 1.jpg/b+2.php/a 1_2.jpg 3-修改图片版权信息 原文地址:https://www.cnblogs.com/mrlpl/p/12355369.html

C# GDI+ 简单实现图片写文字和图片叠加(水印)(转)

using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControl

android图像处理系列之六--给图片添加边框(下)-图片叠加

前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以忽略包的大小,那么可以用前种处理方式,本文讲到的虽然可以减小图片的体积,但处理较复杂,而且本人研究的还不是很成熟.本文就是针对JPG边框处理,但缺点是还不够成熟,仅提供思路. 思路:可以将边框做成JPG图片,没有边框的地方,一般都是中间区域调成特殊颜色,比如黑色.在两张图片叠加的时候,对边框图片做特

Google Earth 图片叠加Geo-referencing算法

在Google Earth中,可将一个图片添加进来成为一个“叠加层”(菜单:添加->图像叠加层),通过对图片叠加层进行平移.旋转.拉伸等操作,使图片上的地理要素与Google Earth中的卫星图像重合,这一过程称之为对图像的Geo-referencing,即:图像的像素空间(以像素的行.列为坐标)与地理空间(以经纬度为坐标)之间的映射. 以深圳市宝安区绿道地图(地址:http://imgbdb2.bendibao.com/szbdb/20143/20/201432014584100.jpg)为

图片(画布上的图片)上传总结

最近在做图片上传的一些东西,目前为止已经做的相对比较完善了,所以对图片上传做一些总结. 我最初的想法是把html5的标签canvas上的图片得到,上传到服务器上并能够及时预览. canvas上的图片分为两种情况: 1.自己绘制上去的.代码如下: var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); var grd=cxt.createLinearGradient(0,0,175,

Button 文字阴影,自定义图片,代码绘制样式,添加音效的方法

1.Button自己在xml文件中绑定监听器 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&qu

php表单提交 图片、音乐、视频、文字,四种类型共同提交到数据库

这个问题一直困扰了我好几天,终于在今天让我给解决了,难以掩饰的激动. 其实在之前没有接触到这种问题,只是表单提交数据而已,再就是图片,四种类型同时提交还真是没遇到过,做了一个系统,其中有一个功能就是提交这四种类型的数据,我只能把这个功能拿到最后来做,就在这几天所有功能都做完了,只剩下了这一个功能,我真的很闹心,这几天睡觉都睡的不踏实,各种的表单提交,做梦也是表单提交,醒来后我在想我的内心原来那么脆弱么,一点压力都承受不住? 事实还好,不管怎么样问题都被解决了 也很感谢博客园的一位哥哥,指点了我,

图片转换成文字并导出的方法

一般我们如果想要把一张图片转换成文字,最常用的方法就是对照着图片将里面的文字手动敲打出来.但是,大家都知道,如果图片上的文字太多了话,手动敲打文字这种方法就不适用了.现在给大家分享一个简单的方法,将图片转换成文字并导出,用手机就可以轻松实现.一.准备工作:将需要识别的文字用手机拍照,如果是网上的资料.文章,可截屏保存,如果是图片上的文字,可直接保存图片.二.找到"迅捷文字识别"这个OCR文字识别工具这是一个可以识别图片上的文字的手机应用,可以将图片上的长篇文字很快识别成文本,在手机上的

[ASP.NET] 如何透过 HTTP Handler 让 Web 项目中的图片 Response 时加上指定的文字(转)

这两天在网络上逛街的时候, 看到"Topcat"的一篇文章 "如何透过 HTTP Handler 让 Web 项目中的图案(JPG)Response时加上指定的文字" 因为之前大多都另外使用 ashx 文件刷新图片, 输出时在使用者网页上看到的连结也大多会是 *.ashx,看久了总觉得很怪╰(‵□′)╯ 还好有看到这篇文章,在此先谢谢 Cat 大大- 以下,转录自"topcat 姗舞之间的极度凝聚" 另外,请 Cat 大大恕我修改了 小-小-小-