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