zoukankan      html  css  js  c++  java
  • 给图片加上水印效果

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

            }
  • 相关阅读:
    深度分析:SpringBoot异常捕获与封装处理,看完你学会了吗?
    去年去阿里面试,面试官居然问我Java类和对象,我是这样回答的!
    面试官:小伙子,你给我详细说一下线程的状态有哪些吧?
    新鲜出炉!JAVA线程池精华篇深度讲解,看完你还怕面试被问到吗?
    面试官:小伙子,你给我讲一下java类加载机制和内存模型吧
    深度分析:面试90%被问到的多线程、创建线程、线程状态、线程安全,一次性帮你全搞定!
    close与shutdown
    select模型(二 改进服务端)
    select模型(一 改进客户端)
    5种IO模型
  • 原文地址:https://www.cnblogs.com/zjz/p/265664.html
Copyright © 2011-2022 走看看