c# 文字水印阴影-C# 生成文字水印在图片上

问题描述

C# 生成文字水印在图片上

CS代码:

    public class CreatShui
{
    public CreatShui()
    {
        //
        // TODO: Add constructor logic here
        //
        this.Width = 270;
        this.Height = 30;
        this.FontFamily = "幼圆";
        this.FontSize = 12;
        this.FontStyle = FontStyle.Regular;

        this.Adaptable = true;
        this.Shadow = false;
        this.Left = 0;
        this.Top = 0;
        this.Alpha = 255;
        this.Red = 0;
        this.Green = 0;
        this.Blue = 0;
        this.BackgroundImage = "";
        this.Quality = 100;
        this.BgColor = Color.FromArgb(0, 255, 255, 255);
    }
    /**/
    /// <summary>
    /// 字体
    /// </summary>
    public string FontFamily { get; set; }
    /**/
    /// <summary>
    /// 文字大小
    /// </summary>
    public int FontSize { get; set; }
    /**/
    /// <summary>
    /// 文字风格
    /// </summary>
    public FontStyle FontStyle { get; set; }
    /**/
    /// <summary>
    /// 透明度0-255,255表示不透明
    /// </summary>
    public int Alpha { get; set; }
    /**/
    /// <summary>
    /// 水印文字是否使用阴影
    /// </summary>
    public bool Shadow { get; set; }
    public int Red { get; set; }
    public int Green { get; set; }
    public int Blue { get; set; }
    /**/
    /// <summary>
    /// 底图
    /// </summary>
    public string BackgroundImage { get; set; }
    /**/
    /// <summary>
    /// 水印文字的左边距
    /// </summary>
    public int Left { get; set; }
    /**/
    /// <summary>
    /// 水印文字的顶边距
    /// </summary>
    public int Top { get; set; }
    /**/
    /// <summary>
    /// 生成后的图片
    /// </summary>
    public string ResultImage { get; set; }
    /**/
    /// <summary>
    /// 水印文本
    /// </summary>
    public string Text { get; set; }
    /**/
    /// <summary>
    /// 生成图片的宽度
    /// </summary>
    public int Width { get; set; }
    /**/
    /// <summary>
    /// 生成图片的高度
    /// </summary>
    public int Height { get; set; }
    /**/
    /// <summary>
    /// 若文字太大,是否根据背景图来调整文字大小,默认为适应
    /// </summary>
    public bool Adaptable { get; set; }
    public Color BgColor { get; set; }
    /**/
    /// <summary>
    /// 输出图片质量,质量范围0-100,类型为long
    /// </summary>
    public long Quality { get; set; }
    /**/
    /// <summary>
    /// 立即生成水印效果图
    /// </summary>
    /// <returns>生成成功返回true,否则返回false</returns>
    public bool Create()
    {
        try
        {
            Bitmap bitmap;
            Graphics g;
            //使用纯背景色
            if (this.BackgroundImage.Trim() == "")
            {
                bitmap = new Bitmap(this.Width, this.Height, PixelFormat.Format32bppArgb);//.Format64bppArgb);
                g = Graphics.FromImage(bitmap);
                g.Clear(this.BgColor);
            }
            else
            {
                bitmap = new Bitmap(Image.FromFile(this.BackgroundImage));
                g = Graphics.FromImage(bitmap);
            }
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.CompositingQuality = CompositingQuality.HighQuality;
            Font f = new Font(this.FontFamily, this.FontSize, this.FontStyle);
            SizeF size = g.MeasureString(this.Text, f);
            // 调整文字大小直到能适应图片尺寸
            while (this.Adaptable == true && size.Width > bitmap.Width)
            {
                this.FontSize--;
                f = new Font(this.FontFamily, this.FontSize, this.FontStyle);
                size = g.MeasureString(this.Text, f);
            }
            Brush b = new SolidBrush(Color.FromArgb(this.Alpha, this.Red, this.Green, this.Blue));
            StringFormat strFormat = new StringFormat();
            strFormat.Alignment = StringAlignment.Near;
            if (this.Shadow)
            {
                Brush b2 = new SolidBrush(Color.FromArgb(90, 0, 0, 0));
                g.DrawString(this.Text, f, b2, this.Left + 2, this.Top + 1);
            }
            g.DrawString(this.Text, f, b, new PointF(this.Left, this.Top), strFormat);
            bitmap.Save(this.ResultImage, ImageFormat.Png);

            //MemoryStream ms = new MemoryStream();
            ////保存为Jpg类型
            //bitmap.Save(ms, ImageFormat.Png);
            //Image img = Image.FromStream(ms);
            ////bitmap.Save(ms, ImageFormat.Png);
            //img.Save(this.ResultImage, ImageFormat.Png);
            //img.Dispose();

            bitmap.Dispose();
            g.Dispose();
            return true;
        }
        catch
        {
            return false;
        }
    }
}

调用方式:

Core.CreatShui cs = new Core.CreatShui();
cs.Text = "我是中国人";
cs.Create();
时间: 2024-12-21 22:11:53

c# 文字水印阴影-C# 生成文字水印在图片上的相关文章

Asp.net上传图片同时生成文字水印图,图片水印图,缩略图

  .aspx <body>     <form id="form1" runat="server">     <div>         <asp:FileUpload ID="FileUpload1" runat="server" /><br />         <asp:Button ID="Button1" runat="

PHP上传、生成缩略图、生成文字水印和图片水印

<?php/* '-##########################################-| '|     程序设计:(绿竹居)                | '|     MSN:[email]lzj_zhangjun@hotmail.com[/email]         | '|     Email:cszjun@gmail.com              | '|     结合自己以前做的上传和生成缩略和改编一个 '|     老前辈的生成图片水印做成这个     

asp.net如何在图片上加水印文字具体实现

 这篇文章主要介绍了asp.net如何在图片上加水印文字具体实现,有需要的朋友可以参考一下 第一步,添加一个一般处理程序(Handler),本例是ImageHandler   代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebContro

推荐几个去掉图片上水印文字的技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 推荐几个去掉图片上水印文字的技巧,211.html">觉得实用就快收藏哦!推荐几个去掉图片上的文字的技巧 1.使用仿制图章工具去除文字. 这是比较常用的方法.具体的操作是,选取仿制图章工具,按住Alt键,在无文字区域点击相似的色彩或图案采样, 然后在文字区域拖动鼠标复制以复盖文字. 要注意的是,采样点即为复制的起始点.选择不同

php实现图片上传时添加文字和图片水印技巧_php技巧

本文实现的功能特别适用于一些商城和图片站中,分享了图片在上传时添加文字和图片水印的技巧,供大家参考,具体内容如下 1. water.class.php <?php header('Content-Type:text/html;charset=utf-8'); /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose

java实现图片上加文字水印(SpringMVC + Jsp)_java

看之前要先对SpringMVC进行了解打好基础,下面直接先看效果图 代码编写 1.导入相关架包 2.配置文件 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"

ASP在上传的图片上打自己的文字水印

很多时候需要在用户上传的图片上加上版权或者一些其他的附加文字信息,如何实现这样的功能,下面帖个简单实现的例子,起到抛砖引玉的作用. <%@PageLanguage="c#"Debug="true"Trace="true"%> <%@ImportNamespace="System.IO"%> <%@ImportNamespace="System.Drawing"%> <

如何在上传的图片上打自己的文字水印

很多时候需要在用户上传的图片上加上版权或者一些其他的附加文字信息,如何实现这样的功能,下面帖个简单实现的例子,起到抛砖引玉的作用. <%@PageLanguage="c#"Debug="true"Trace="true"%><%@ImportNamespace="System.IO"%><%@ImportNamespace="System.Drawing"%><%@

分享C#动态生成文字图片解决方案

动态|解决     大家都知道我们如果想把网页上的文字做出比较炫的效果,便只能用POTOSHOP.FIREWORK等图像处理软件把文字做成图片来实现,因为这样才不会依赖浏览者的字体.浏览器类型等.可是在我们的WEB应用中又往往是动态的文字,我们便不能用图像处理软件来处理了,只能让WEB程序动态生成,幸运地是.Net Framework给我们提供了便利,下面我们就利用System.Drawing命名空间下的Bitmap类与Graphics类来编写一个生成文字图片的类,使用该类生成图片时能满足以下需