private void Btn_Upload_Click(object sender, System.EventArgs e)
        
{
            
if(UploadFile.PostedFile.FileName.Trim()!="")
            
{
                
//上传文件
                string extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper();
                
string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                
string path = Server.MapPath("."+ "/UploadFile/" + fileName + extension;
                UploadFile.PostedFile.SaveAs(path);

                
//加文字水印,注意,这里的代码和以下加图片水印的代码不能共存
                System.Drawing.Image image = System.Drawing.Image.FromFile(path);
                Graphics g 
= Graphics.FromImage(image);
                g.DrawImage(image, 
00, image.Width, image.Height);
                Font f 
= new Font("Verdana"32);
                Brush b 
= new SolidBrush(Color.White);
                
string addText = AddText.Value.Trim();
                g.DrawString(addText, f, b, 
1010);
                g.Dispose();

                
//加图片水印
                System.Drawing.Image image = System.Drawing.Image.FromFile(path);
                System.Drawing.Image copyImage 
= System.Drawing.Image.FromFile( Server.MapPath("."+ "/Alex.gif");
                Graphics g 
= Graphics.FromImage(image);
                g.DrawImage(copyImage, 
new Rectangle(image.Width-copyImage.Width, image.Height-copyImage.Height, copyImage.Width, copyImage.Height), 00, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
                g.Dispose();

                
//保存加水印过后的图片,删除原始图片
                string newPath = Server.MapPath("."+ "/UploadFile/" + fileName + "_new" + extension;
                image.Save(newPath);
                image.Dispose();
                
if(File.Exists(path))
                
{
                    File.Delete(path);
                }


                Response.Redirect(newPath);
            }

        }

posted on 2004-10-20 10:04 流浪的狗 阅读(18396) 评论(35)  编辑 收藏 网摘 所属分类: Dotnet C#

评论

#1楼  2004-10-21 10:39 Stephen      

可以直接对时间定义输出格式:DateTime.Now.ToString("yyyyMMddhhmmss");   回复  引用  查看    

#2楼 [楼主] 2004-10-21 10:44 边城浪子      

哦,我知道了,多谢指教,呵呵   回复  引用  查看    

#3楼 61.49.135.* 2004-10-24 22:03 pq [未注册用户]

小白。这个怎么也支持折叠啊。 是自己写了脚本还是网站本来就支持的?   回复  引用    

#4楼 211.99.124.* 2004-11-18 20:37 夜行人 [未注册用户]

水印加上了怎么有锯齿啊   回复  引用    

#5楼 155.69.103.* 2004-11-26 16:03 快乐天使 [未注册用户]

能不能把完整的验证码(加水印)给出来呀?
小弟是菜鸟,多谢赐教。   回复  引用    

#6楼 211.155.244.* 2004-12-18 12:58 007 [未注册用户]

thanks   回复  引用    

#7楼 219.136.17.* 2004-12-23 00:36 Hawk [未注册用户]

有没有ASP的源程序呢?   回复  引用    

#8楼 61.174.166.* 2005-01-13 10:31 五月的海岸线 [未注册用户]

请问我这里经常要报
未将对象引用设置到对象的实例。
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("./r/1.jpg"));
  回复  引用    

#9楼 221.136.18.* 2005-01-13 17:54 五月的海岸线 [未注册用户]

带索引的图像不能创建Graphics对象   回复  引用    

#10楼 219.146.77.* 2005-03-17 15:09 mm [未注册用户]

能不能在适当位置加水印啊,谢谢赐教!   回复  引用    

#11楼 [楼主] 2005-03-17 16:43 边城浪子      

DrawString()和DrawImage()这两个方法中有确定位置的参数啊   回复  引用  查看    

#12楼 219.140.128.* 2005-03-28 17:10 paperman [未注册用户]

怎么可以让加上的水印效果变透明?   回复  引用    

#13楼 221.228.106.* 2005-06-15 15:24 小名 [未注册用户]

感谢楼主!透明把水印图片弄透明呗   回复  引用    

#14楼 218.193.153.* 2005-06-22 18:09 葛勇 [未注册用户]

用asp.net画出来的图片分辨率比较低,这个问题有办法解决吗?   回复  引用    

#15楼 218.193.153.* 2005-06-22 18:10 葛勇 [未注册用户]

用asp.net画出来的图片分辨率比较低,这个问题有办法解决吗?

ge_yong@dhu.edu.cn   回复  引用    

#16楼 219.134.114.* 2005-06-25 02:35 neil [未注册用户]

有没人有出去图片水印的代码。
lraosi@163.com   回复  引用    

#17楼 219.134.114.* 2005-06-25 02:36 NEIL [未注册用户]

有没人有清洗掉图片水印的代码。
lraosi@163.com
  回复  引用    

#18楼 218.18.74.* 2005-06-28 11:54 心飘逝 [未注册用户]

file.SaveAs Server.mappath(fileName)
dim photo,logo,photopath,logopath
Set Photo = Server.CreateObject("Persits.Jpeg")
PhotoPath = Server.MapPath(FileName)
Photo.Open PhotoPath
Set Logo = Server.CreateObject("Persits.Jpeg")
LogoPath = Server.MapPath("mail.gif")
Logo.Open LogoPath
Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth
Photo.DrawImage photo.width-140, photo.height-170, Logo,0.8
photo.Save Server.MapPath(FileName)
  回复  引用    

#19楼 218.18.74.* 2005-06-28 11:54 心飘逝 [未注册用户]

以上是ASP代码方式的。   回复  引用    

#20楼 218.13.76.* 2005-08-15 09:50 VICTORLI [未注册用户]

本人是菜鸟。。。

希望学习   回复  引用    

#21楼  2005-10-18 17:52 色即是凶--呵呵      

用asp.net画出来的图片分辨率比较低,这个问题有办法解决吗?   回复  引用  查看    

#22楼  2005-10-31 18:06 .net技術      

为什么只能给.jpg格式的图片加水印?
无法从带有索引像素格式的图像创建 Graphics 对象。   回复  引用  查看    

#23楼 221.226.194.* 2005-11-16 16:23 guys_alpha [未注册用户]

public string GetId()
{
return GetDateRandom(6);
}
public string GetDateRandom(int int_Count)
{
string strData=DateTime.Now.ToString("yyyyMMddHHmmss");
strData=strData.Replace(":","");
strData=strData.Replace("-","");
strData=strData.Replace(" ","");
strData=strData+GetRandom(int_Count);
return strData;
}
public string GetRandom(int int_Count)
{
string str_RV="1";
for (int i=0;i<int_Count-2;i++)
{
str_RV=str_RV+"0";
}
Random r=new Random();
str_RV=r.Next(int.Parse(str_RV)).ToString();
int int_Count1=int_Count-str_RV.Length;
if (int_Count1>0)
{
for (int i=0;i<int_Count1;i++)
{
str_RV=str_RV+"0";
}
}
return str_RV;
}

posted on 2009-03-20 11:35  ★偏翩☆逍遥  阅读(392)  评论(0编辑  收藏  举报