/// <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);
    }

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

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

    using System; using System.Collections; using System.Configuration; using System.Data; using System. ...

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

    前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...

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

    前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...

  4. javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置. ...

  5. css图片叠加和底部定位

    css图片叠加和底部定位 css图片叠加 两张图片需要叠在一起显示,如何定位 容器先对定位 第一张图片正常摆放 第二张图片绝对定位,top:0px 这样便实现了两张图片叠加在一起了,设置z-index ...

  6. Android OpenCV实现图片叠加,水印

    关于如何用纯OpenCV实现图片叠加的例子实在是太少,太多的是使用 C++,JNI实现的,如果要用C++的话,我们为啥不转行做C++ 下面的例子基于 Android JavaCV 实现了在im_bea ...

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

    这个问题一直困扰了我好几天,终于在今天让我给解决了,难以掩饰的激动. 其实在之前没有接触到这种问题,只是表单提交数据而已,再就是图片,四种类型同时提交还真是没遇到过,做了一个系统,其中有一个功能就是提 ...

  8. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

    javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...

  9. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

随机推荐

  1. 安装Prometheus-Opeartor

    一.下载git clone clone https://github.com/coreos/prometheus-operator.git或:wget https://github.com/coreo ...

  2. django restframework Serializers

    序列化器允许将诸如查询集和模型实例之类的复杂数据转换为原生 Python 数据类型,然后可以将它们轻松地呈现为 JSON,XML 或其他内容类型.序列化器还提供反序列化,在首次验证传入数据之后,可以将 ...

  3. 【洛谷P1379】八数码难题 状压bfs

    对于这道题来说,每个时刻的状态是整个棋盘所有棋子的位置,即:任何一个棋子位置发生了移动,都会使得状态转移. 因此,需要采取将整个状态作为广搜的搜索对象,进行状态压缩.采用哈希得到每个状态的对应的数值, ...

  4. java基础题整理(1)

    1.使用length属性获取数组长度,使用length()获取字符串的长度: 2.public.private.protected.friendly区别 public表明该数据成员.成员函数是对所有用 ...

  5. You are using safe update mode and you tried to update a table--mysql

    SET SQL_SAFE_UPDATES = 0;delete from cms_article_data where id in(SELECT id FROM jeesite.cms_article ...

  6. spring @Transactional注解参数详解

    事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: @Transactional public class TestServiceBean imp ...

  7. IDEA如何自动提示并补全syso和main呢?

    myeclipse使用若干年了,syso和main也被打过无数遍,切换到IDEA开发工具中,一按,天啦,竟然没有自动补全,顿时觉得IDEA弱爆了,经过摸索之后,IDEA终结没有令人失望.可以通过配置L ...

  8. 三种数据库连接池的配置及使用(For JDBC)

    DBCP 一.导包 Apache官网下载DBCP包,导入两个包路径如下: commons-dbcp-1.4-bin\commons-dbcp-1.4\commons-dbcp-1.4.jar:连接池的 ...

  9. Problems you may meet

    一.正确安装sklearn却提示No module named 'sklearn.lda' It seems that you have installed a newer version of sk ...

  10. webStorm2018激活的方法

    问题 激活 webstorm 2018 最新版 解决步骤 License server:http://im.js.cn:8888