日期:2009-06-14  浏览次数:20388 次

//方法作用:生成水印图片
//sourcefile:要生成水印的图片文件
//WaterMarkfile:存放水印的图片文件

//savefile:存放水印的图片文件
public static bool MakeWaterImage(string sourceFile,string waterMarkFile,string saveFile)
{
bool result;
try
{
//原图
Bitmap sImage = new Bitmap(sourceFile);
int sWidth = sImage.Width;
int sHeight = sImage.Height;

//水印图
Bitmap wImage = new Bitmap(waterMarkFile);
int wWidth = wImage.Width;
int wHeight = wImage.Height;

//make Graphics.
Graphics g = Graphics.FromImage(sImage);
int x; //临时变量
int y; //监时变量
int x1; //原图和水印图的宽度差
int y1; //原图和水印图的高度差
int w; //生成的水印图的宽度
int h; //生成的水印图的高度
int al; //alpha
int rl; //Red
int gl; //Green
int bl; //Blue

if(sWidth > wWidth)
{
x1 = sWidth - wWidth;
y1 = sHeight - wHeight;
w = wWidth;
h = wHeight;
}
else
{
x1 = 0;
y1 = 0;
w = sWidth;
h = sHeight;
}
//开始绘图
for(x = 1; x < w; x++)
{
for(y = 1; y < h; y++)
{
al = wImage.GetPixel(x,y).A;
rl = wImage.GetPixel(x,y).R;
gl = wImage.GetPixel(x,y).G;
bl = wImage.GetPixel(x,y).B;
al = 70;

if(rl + 25 < 255)
rl += 25;
if(gl + 25 < 255)
gl += 25;
if(bl + 25 < 255)
bl += 25;
g.DrawEllipse(new Pen(new SolidBrush(Color.FromArgb(al,rl,gl,bl))),x1+x,y1+y,1,1);
}
}
g.Save();
sImage.Save(saveFile);
result = true;
}
catch
{
result = false;
}
return result;
}

但这个不能在GIF格式上加图片。。