/*
*
* 使用说明:
* 建议先定义一个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+ 位图,此位图由图形图像及其属性的像素数据组成。
//