.net为图片制作水印

.NET
612
0
0
2022-03-22
标签   .Net图片

在自己的网站上传的图片加水印好像成了一种风尚,成为防止图片盗用图片和做宣传网站的一种方式。

现在就教你如何制作这些水印的、

private void Button1_Click(object sender, System.EventArgs e)
{
    string filename=this.file_up.PostedFile.FileName;
    string path;
    //本水印制作不改变上传图片的文件名 
    //代码编写:阿光 
    //取得文件的名称
    filename=filename.Substring(filename.LastIndexOf("\\")+1);
    //对jpg图片加水印 
    if(getExtName(filename)=="jpg")
    {
        if(this.rblTypes.SelectedValue=="1")
            addText(filename);
        else
            addImage(filename);
    }
    else
    {
        //直接上传图片
        path=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename;
        this.file_up.PostedFile.SaveAs(path);
    }
    this.Image1.ImageUrl=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename;
}

两个方法:

//取得文件名(不包括扩展名)
private string getFileName(string filename)
{
    return filename.Remove(filename.LastIndexOf("."),4);
}
//取得文件的扩展名
private string getExtName(string filename)
{
    return filename.Substring(filename.LastIndexOf(".")+1);
}
//加文字水印:
private void addText(string filename)
{
    string str;
    string path;
    string filename1,extname;
    //取得文件名(不包括扩展名)
    filename1=getFileName(filename);
    //取得文件的扩展名
    extname=getExtName(filename);
    //取得上传后的文件路径
    path=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename1+"_temp."+extname;
    //上传图片 
    this.file_up.PostedFile.SaveAs(path);
    System.Drawing.Image image=System.Drawing.Image.FromFile(path);
    System.Drawing.Graphics g=System.Drawing.Graphics.FromImage(image);
    //将图片绘制到graphics中
    g.DrawImage(image,0,0,image.Width,image.Height);
    //设置文字的属性 
    System.Drawing.Font f=new Font("Verdana",10);
    //判断图片的大小,如果图片过小,不写文字 
    if(image.Width>=250)
    //在此设定在图片上所加的文字
    str="jzg7366";
    else
    str="";
    int x,y;
    //写的文字的起始位置,x,y坐标
    x=image.Width-(int)(str.Length*15);
    y=image.Height-20;
    //设置字体的颜色 
    System.Drawing.Brush b=new SolidBrush(Color.White);
    //写字
    g.DrawString(str,f,b,x,y);
    //释放graphics
    g.Dispose();
    //确定新图片的文件路径 
    string newpath=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename;
    //保存写上字的图片
    image.Save(newpath);
    //释放image
    image.Dispose();
    //删除没加水印的图片,记得一定要放在image释放之后,否则无法删除 
    System.IO.File.Delete(path);
}

加图片水印:

private void addImage(string filename)
{
    string path;
    string logo_path;
    string filename1,extname;
    //取得文件名(不包括扩展名)
    filename1=getFileName(filename);
    //取得文件的扩展名
    extname=getExtName(filename);
    //取得上传后的文件路径
    path=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename1+"_temp."+extname;
    //上传图片 
    this.file_up.PostedFile.SaveAs(path);
    //上传文件的临时位置
    path=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename1+"_temp."+extname;
    //图标文件的位置
    logo_path=HttpContext.Current.Request.PhysicalApplicationPath+"images\\logo.gif";
    System.Drawing.Image image=System.Drawing.Image.FromFile(path);
    System.Drawing.Image copyImage=System.Drawing.Image.FromFile(logo_path);
    System.Drawing.Graphics g=System.Drawing.Graphics.FromImage(image);
    //将水印打印到上传图片上去
    g.DrawImage(copyImage,new Rectangle(image.Width-copyImage.Width-5,image.Height-copyImage.Height-5,copyImage.Width,copyImage.Height),0,0,copyImage.Width,copyImage.Height,System.Drawing.GraphicsUnit.Pixel);
    g.Dispose();
    //确定新图片的文件路径 
    string newpath=HttpContext.Current.Request.PhysicalApplicationPath+"images\\"+filename;
    //保存写上字的图片
    image.Save(newpath);
    //释放image
    image.Dispose();
    //删除没加水印的图片,记得一定要放在image释放之后,否则无法删除 
    System.IO.File.Delete(path);
}