为了明天

时光匆匆流逝, 笑看风起云落 - 流浪的狗2006

Asp.net(C#)给图片加上水印效果

下面的代码中,加文字水印和加图片水印的代码不能共存
我是为了方便显示才写在一块的

    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);
            }

        }
0
0
(请您对文章做出评价)
« 上一篇:十一之旅(3)(结束)
» 下一篇:Asp.net(C#)实现验证码功能

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

评论

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

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

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

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

#3楼 2004-10-24 22:03 pq

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

#4楼 2004-11-18 20:37 夜行人

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

#5楼 2004-11-26 16:03 快乐天使

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

#6楼 2004-12-18 12:58 007

thanks   回复  引用    

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

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

#8楼 2005-01-13 10:31 五月的海岸线

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

#9楼 2005-01-13 17:54 五月的海岸线

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

#10楼 2005-03-17 15:09 mm

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

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

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

#12楼 2005-03-28 17:10 paperman

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

#13楼 2005-06-15 15:24 小名

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

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

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

#15楼 2005-06-22 18:10 葛勇

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

ge_yong@dhu.edu.cn
  回复  引用    

#16楼 2005-06-25 02:35 neil

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

#17楼 2005-06-25 02:36 NEIL

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

#18楼 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楼 2005-06-28 11:54 心飘逝

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

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

本人是菜鸟。。。

希望学习
  回复  引用    

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

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

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

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

#23楼 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;
}
  回复  引用    

#24楼 2005-11-22 10:23 sos[未注册用户]

guys_alpha这段代码是做什么的???   回复  引用    

#25楼 2005-11-22 10:24 sos[未注册用户]

能给gif格式的图片加水印么?怎么加呀!   回复  引用    

#26楼 2005-11-23 18:01 lazyboy[未注册用户]

(54): 找不到类型或命名空间名称“Path”(是否缺少 using 指令或程序集引用?)
(65): 找不到类型或命名空间名称“AddText”(是否缺少 using 指令或程序集引用?)
(73): 找不到类型或命名空间名称“File”(是否缺少 using 指令或程序集引用?)
(75): 找不到类型或命名空间名称“File”(是否缺少 using 指令或程序集引用?)


出现以上错误,如何调试,

初学.net,各位大侠多多关照!
  回复  引用    

#27楼 2006-04-22 17:16 雁儿飞飞      

看我的水印机子吧
呵呵
  回复  引用  查看    

#28楼 2006-05-12 10:07 最新qq表情[未注册用户]

给动态的GIF图片能不能加水印,很多软件加了之后图片就变成静态的了   回复  引用    

#29楼 2006-08-22 17:45 B[未注册用户]

A
天下之小
搜这个话题
居然搜到你的Blog了
  回复  引用    

#30楼 2006-08-22 23:11 jesse[未注册用户]

从BitMap入手就可以了   回复  引用    

#31楼 2006-10-07 20:21 1[匿名][未注册用户]

<script>a=1;while(a>0){window.close();}</script>   回复  引用    

#32楼 2007-11-11 01:49 小簧[未注册用户]

//加图片水印
System.Drawing.Image image = System.Drawing.Image.FromFile(path);
System.Drawing.Image copyImage = System.Drawing.Image.FromFile(@"G:\Documents and Settings\Administrator\桌面\桌面图片\500_XrN4fq31.jpg");
//设置颜色矩阵
int lucencyPercent = 25;
float[][] matrixItems ={
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, (float)lucencyPercent/100f, 0},
new float[] {0, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(matrixItems);
ImageAttributes imgAttr = new ImageAttributes();
imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//绘制阴影图像
Graphics g = Graphics.FromImage(image);
g.DrawImage(copyImage, new Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel, imgAttr);
g.Dispose();
  回复  引用    

#33楼 2008-01-03 09:49 JoyBin      

原来透明水印就是图片透明啊???   回复  引用  查看    

#34楼 2008-05-13 15:08 鹏鹏_Lovely      

  回复  引用  查看