Ejemplo n.º 1
0
        private static void SaveWaterPic(string sUploadPathAndFileName, WaterPositionOptions position)
        {
            sUploadPathAndFileName = HttpContext.Current.Server.MapPath(sUploadPathAndFileName);

            Image    image  = Image.FromFile(sUploadPathAndFileName);
            Bitmap   bitmap = new Bitmap(image.Width, image.Height);
            Graphics g      = Graphics.FromImage(bitmap);

            g.DrawImage(image, new Point(0, 0));
            Image         waterImage    = GetWaterMarkImage();
            WaterPosition waterPosition = GetWaterPosition(image.Width, image.Height, waterImage.Width, waterImage.Height, position);

            //打水印
            g.DrawImage(waterImage, new Rectangle((int)waterPosition.X, (int)waterPosition.Y, waterImage.Width, waterImage.Height), 0, 0, waterImage.Width, waterImage.Height, System.Drawing.GraphicsUnit.Pixel);
            image.Dispose();
            waterImage.Dispose();
            bitmap.Save(sUploadPathAndFileName);
            bitmap.Dispose();
            g.Dispose();
        }
Ejemplo n.º 2
0
        private static WaterPosition GetWaterPosition(float width, float height, float waterMarkWidth, float waterMarkHeight, WaterPositionOptions position)
        {
            WaterPosition position2 = new WaterPosition();

            switch (position)
            {
            case WaterPositionOptions.LeftTop:
                position2.X = 0f;
                position2.Y = 0f;
                break;

            case WaterPositionOptions.RightTop:
                position2.X = width - waterMarkWidth;
                position2.Y = 0f;
                break;

            case WaterPositionOptions.Middle:
                position2.X = ((float)(width - waterMarkWidth)) / 2f;
                position2.Y = ((float)(height - waterMarkHeight)) / 2f;
                break;

            case WaterPositionOptions.LeftBottom:
                position2.X = 0f;
                position2.Y = height - waterMarkHeight;
                break;

            case WaterPositionOptions.RightBottom:
                position2.X = width - waterMarkWidth;
                position2.Y = height - waterMarkHeight;
                break;
            }
            return(position2);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 上传图片打水印并生成缩略图(缩略图名称前加小写的英文字母“s”)并且按照最大宽度缩略
 /// </summary>
 /// <param name="bytes">文件字节数组</param>
 /// <param name="sUploadPathAndFileName">保存相对路径及文件名</param>
 /// <param name="nMaxSize">最大尺寸(根据MaxMode方式选择宽或高缩略)</param>
 /// <param name="MaxMode">缩略图生成方式(ThumbnailMode.W或者ThumbnailMode.H)</param>
 /// <param name="position">水印图片坐标位置</param>
 /// <param name="nWidth">缩略图宽</param>
 /// <param name="nHeight">缩略图高</param>
 /// <param name="mode">缩略图方式</param>
 /// <returns></returns>
 public static bool UploadPicFileClipByMaxSize(byte[] bytes, string sUploadPathAndFileName, int nMaxSize, ThumbnailMode MaxMode, WaterPositionOptions position, int nWidth, int nHeight, ThumbnailMode mode)
 {
     try
     {
         if (UploadFile(bytes, sUploadPathAndFileName))
         {
             SaveThumbnailPic(sUploadPathAndFileName, Path.GetDirectoryName(sUploadPathAndFileName) + "/s" + Path.GetFileName(sUploadPathAndFileName), nWidth, nHeight, mode);
             SaveThumbnailPic(sUploadPathAndFileName, sUploadPathAndFileName, nMaxSize, nMaxSize, MaxMode);
             SaveWaterPic(sUploadPathAndFileName, position);
             return(true);
         }
         return(false);
     }
     catch
     {
         return(false);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 上传图片打水印
 /// </summary>
 /// <param name="bytes">文件字节数组</param>
 /// <param name="sUploadPathAndFileName">保存相对路径及文件名</param>
 /// <param name="position">水印图片坐标位置</param>
 /// <returns></returns>
 public static bool UploadPicFileToWater(byte[] bytes, string sUploadPathAndFileName, WaterPositionOptions position)
 {
     try
     {
         if (UploadFile(bytes, sUploadPathAndFileName))
         {
             SaveWaterPic(sUploadPathAndFileName, position);
             return(true);
         }
         return(false);
     }
     catch
     {
         return(false);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 上传图片打水印并生成缩略图(缩略图名称前加小写的英文字母“s”)并且按照最大宽度缩略
 /// </summary>
 /// <param name="postedFile">文件流</param>
 /// <param name="sUploadPathAndFileName">保存相对路径及文件名</param>
 /// <param name="nMaxSize">最大尺寸(根据MaxMode方式选择宽或高缩略)</param>
 /// <param name="MaxMode">缩略图生成方式(ThumbnailMode.W或者ThumbnailMode.H)</param>
 /// <param name="position">水印图片坐标位置</param>
 /// <param name="nWidth">缩略图宽</param>
 /// <param name="nHeight">缩略图高</param>
 /// <param name="mode">缩略图方式</param>
 /// <returns></returns>
 public static bool UploadPicFileClipByMaxSize(HttpPostedFile postedFile, string sUploadPathAndFileName, int nMaxSize, ThumbnailMode MaxMode, WaterPositionOptions position, int nWidth, int nHeight, ThumbnailMode mode)
 {
     try
     {
         byte[] bytes = GetUploadBytes(postedFile);
         return(UploadPicFileClipByMaxSize(bytes, sUploadPathAndFileName, nMaxSize, MaxMode, position, nWidth, nHeight, mode));
     }
     catch
     {
         return(false);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 上传图片打水印
 /// </summary>
 /// <param name="postedFile">文件流</param>
 /// <param name="sUploadPathAndFileName">保存相对路径及文件名</param>
 /// <param name="position">水印图片坐标位置</param>
 /// <returns></returns>
 public static bool UploadPicFileToWater(HttpPostedFile postedFile, string sUploadPathAndFileName, WaterPositionOptions position)
 {
     try
     {
         byte[] bytes = GetUploadBytes(postedFile);
         return(UploadPicFileToWater(bytes, sUploadPathAndFileName, position));
     }
     catch
     {
         return(false);
     }
 }