狂野都城

一壶浊酒喜相逢,古今多少事, 都付笑谈中。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

生成水印图片

Posted on 2005-12-21 13:13  狂野都城  阅读(333)  评论(0)    收藏  举报
//方法作用:生成水印图片
//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;
= wWidth;
= wHeight;
}

else
{
x1 
= 0;
y1 
= 0;
= sWidth;
= 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;
}