当前位置:编程学习 > C#/ASP.NET >>

加水印问题

 static public string MakePic(string UploadPath, string FileName)
    {
        string strNewFileName = "";
        try
        {    
            string[] str = strExtension(FileName);
            //提供一个回调方法,用于确定Image对象在执行生成缩略图操作时何时提前取消执行
            //如果此方法确定 GetThumbnailImage 方法应提前停止执行,则返回 true;否则返回 false
            System.Drawing.Image.GetThumbnailImageAbort callb = null;
            //定义image类的对象
            System.Drawing.Image image, smallImage, shuiyinImg, FlagImage;
            //为上传的图片建立引用
            image = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(UploadPath + "/" + str[0] + str[1]));
            /*************加水印开始*********************************************/
            shuiyinImg = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/UploadPic/Flag81_42.png"));
            Graphics g = Graphics.FromImage(image);
            g.DrawImage(shuiyinImg, new Rectangle(image.Width - shuiyinImg.Width, image.Height - shuiyinImg.Height,
                shuiyinImg.Width, shuiyinImg.Height), 0, 0, shuiyinImg.Width, shuiyinImg.Height, GraphicsUnit.Pixel);
            g.Dispose();
            string path1 = System.Web.HttpContext.Current.Server.MapPath(UploadPath + "/F" + str[0] + str[1]);
            image.Save(path1);
            image.Dispose();

            /************加水印的过程结束*********************************************/
            //删除原图,删除加水印后的原图
            // if (File.Exists(strNewFileName))
            //{
            //    File.Delete(strNewFileName);
            // }
            strNewFileName = "F" + str[0] + str[1];
        }
        catch
        {

        }
        return strNewFileName;
    }
    #endregion

我上传的图片用上面的代码已经成功加上了水印,但是图片质量发生严重的改变,   图片的大小也小了3分1.     找了好多资料,不知道如何解决! --------------------编程问答-------------------- image是原始图片,watermark是水印

g.DrawImage(watermark, new Rectangle(image.Width - watermark.Width, image.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel); --------------------编程问答-------------------- 本地图片的图片水印实现   参考下我写的这个

本地图片的图片水印实现 

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

 

public void ImageMark()

    {

        //添加水印后的图片的暂存路径

        string newPath = MapPath(@"~//Images/BookCovers/") + filename + "_new" + ".jpg";

        //需要水印的图片路径

        string Path = Server.MapPath(".") + "/Images/BookCovers/" + filename + ".jpg";

        System.Drawing.Image image = System.Drawing.Image.FromFile(Path);

        //获得水印图片

        System.Drawing.Image copyimage = System.Drawing.Image.FromFile(Server.MapPath(".") + "/Images/WaterMark.jpg");

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

        g.Dispose();

        image.Save(newPath, ImageFormat.Jpeg);

        image.Dispose();

        //删除原图   

        File.Delete(Path);     

        //得到新图

        System.Drawing.Image NewImage = System.Drawing.Image.FromFile(newPath);

        //保存新图至原位置  

        NewImage.Save(Path, ImageFormat.Jpeg);

        NewImage.Dispose();

        //删除暂存图

        File.Delete(newPath);

    }

 


注1:filename为图片文件名,文件名的获得方法自行选择.
注2:保存图片需用绝对路径.


 
--------------------编程问答--------------------
引用 2 楼 luqc1985 的回复:
本地图片的图片水印实现  参考下我写的这个 

本地图片的图片水印实现 

using System.Drawing; 

using System.Drawing.Imaging; 

using System.IO; 



public void ImageMark() 

    { 

        //添加水印后的图片的暂存路径 

        string newPath = MapPath(@"~//Images/BookCovers/") + filename + "_new" + ".jpg"; 

        //需要水印的图片路径 

        string Path = Server.MapPath…

很强大,这个,收藏了。 --------------------编程问答-------------------- 我试过了楼上几位的方法,还是不行.加水印之后的图片质量比没加水印的图片质量要差很多,文件的大小也相差一倍 --------------------编程问答-------------------- 应该没问题啊,我以前做的没发现这样的问题 --------------------编程问答-------------------- 是啊 --------------------编程问答-------------------- 你可能试一下400K 以上的图片再上传加下水印,质量就变了. 水印文件的格式是PNG的
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,