C#(.net)水印图片的生成

本文介绍了一个C#程序,用于在图片上添加水印,支持图片和文字两种形式。通过定义水印位置、透明度等参数,可以自定义地在图片上添加图片或文字水印。
摘要由CSDN通过智能技术生成

 

/*
*
*    使用说明:
*  建议先定义一个WaterImage实例
*  然后利用实例的属性,去匹配需要进行操作的参数
*  然后定义一个WaterImageManage实例
*  利用WaterImageManage实例进行DrawImage(),印图片水印
*  DrawWords()印文字水印
*
-*/

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;

namespace ABC
{

    /// <summary>
    /// 图片位置
    /// </summary>
    public enum ImagePosition
    {
        LeftTop,        //左上
        LeftBottom,    //左下
        RightTop,       //右上
        RigthBottom, //右下
        TopMiddle,     //顶部居中
        BottomMiddle, //底部居中
        Center           //中心
    }

    /// <summary>
    /// 水印图片的操作管理 Design by Gary Gong From Demetersoft.com
    /// </summary>
    public class WaterImageManage
    {
        /// <summary>
        /// 生成一个新的水印图片制作实例
        /// </summary>
        public WaterImageManage()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        /// <summary>
        /// 添加图片水印
        /// </summary>
        /// <param name="sourcePicture">源图片文件名</param>
        /// <param name="waterImage">水印图片文件名</param>
        /// <param name="alpha">透明度(0.1-1.0数值越小透明度越高)</param>
        /// <param name="position">位置</param>
        /// <param name="PicturePath" >图片的路径</param>
        /// <returns>返回生成于指定文件夹下的水印文件名</returns>
        public string DrawImage(string sourcePicture,
                                          string waterImage,
                                          float alpha,

                                          ImagePosition position,
                                          string PicturePath)
        {
            //
            // 判断参数是否有效
            //
            if (sourcePicture == string.Empty || waterImage == string.Empty || alpha == 0.0 || PicturePath == string.Empty)
            {
                return sourcePicture;
            }

 

            //
            // 源图片,水印图片全路径
            //
            string sourcePictureName = PicturePath + sourcePicture;
            string waterPictureName = PicturePath + waterImage;
            string fileSourceExtension = System.IO.Path.GetExtension(sourcePictureName).ToLower();
            string fileWaterExtension = System.IO.Path.GetExtension(waterPictureName).ToLower();
            //
            // 判断文件是否存在,以及类型是否正确
            //
            if (System.IO.File.Exists(sourcePictureName) == false ||
                System.IO.File.Exists(waterPictureName) == false || (
                fileSourceExtension != ".gif" &&
                fileSourceExtension != ".jpg" &&
                fileSourceExtension != ".png") || (
                fileWaterExtension != ".gif" &&
                fileWaterExtension != ".jpg" &&
                fileWaterExtension != ".png")
                )
            {
                return sourcePicture;
            }

            //

            // 目标图片名称及全路径
            //
            string targetImage = sourcePictureName.Replace(System.IO.Path.GetExtension(sourcePictureName), "") + "_1101.jpg";

 

            //
            // 将需要加上水印的图片装载到Image对象中
            //
            Image imgPhoto = Image.FromFile(sourcePictureName);
            //
            // 确定其长宽
            //
            int phWidth = imgPhoto.Width;
            int phHeight = imgPhoto.Height;

            //
            // 封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。
            //
       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值