Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)
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, 0, 0, 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, 10, 10);
??????????????? 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), 0, 0, 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);
??????????? }
??????? }
//生成縮略圖#region //生成縮略圖
??????? /** <summary>
??????? /// 生成縮略圖
??????? /// </summary>
??????? /// <param name="str_originalImagePath">源圖路徑(物理路徑)</param>
??????? /// <param name="str_ThumbnailPath">縮略圖路徑(物理路徑)</param>
??????? /// <param name="i_width">縮略圖寬度</param>
??????? /// <param name="i_height">縮略圖高度</param>
??????? /// <param name="str_mode">生成縮略圖的模式</param>
??????? public static void MakeThumbnail(string str_originalImagePath,string str_ThumbnailPath,int i_width,int i_height,string str_mode)
??????? {
??????????? System.Drawing.Image img_OriginalImage = Image.FromFile(str_originalImagePath);
??????????? int i_ToWidth = i_width;
??????????? int i_ToHeight = i_height;
??????????? int x = 0;
??????????? int y = 0;
??????????? int i_OriginalWidth = img_OriginalImage.Width;
??????????? int i_OriginalHeight = img_OriginalImage.Height;
??????????? switch(str_mode)
??????????? {
??????????????? case "HW": //按照指定的高度和寬度進行縮放(可能變形)
??????????????????? break;
??????????????? case "W" : //指定寬度,高度按照比例縮放
??????????????????? i_ToHeight = img_OriginalImage.Height*i_width/img_OriginalImage.Width;
??????????????????? break;
??????????????? case "H" : //指定高度,寬度按照比例縮放
??????????????????? i_ToWidth = img_OriginalImage.Width*i_Height/img_OriginalImage.Height;
??????????????????? break;
??????????????? case "CUT" : //按照指定的高度和寬度剪裁(不變形)
??????????????????? if ((double)img_OriginalImage.Width/(double)img_OriginalImage.Height > (double)i_ToWidth/(double)i_ToHeight)
??????????????????? {
??????????????????????? i_OriginalHeight = img_OriginalImage.Height;
??????????????????????? i_OriginalWidth = img_OriginalImage.Height*i_ToWidth/i_ToHeight;
??????????????????????? y = 0;
??????????????????????? x = (img_OriginalImage.Width-i_OriginalWidth)/2;
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? i_OriginalWidth = img_OriginalImage.Width;
??????????????????????? i_OriginalHeight = img_OriginalImage.Width*i_Height/i_ToWidth;
??????????????????????? x = 0;
??????????????????????? y = (img_OriginalImage.Height-i_OriginalHeight)/2;
??????????????????? }
??????????????????? break;
??????????????? default:
??????????????????? break;
??????????? }
??????????? //新建一個BMP圖片
??????????? Image img_BitMap = new System.Drawing.Bitmap(i_ToWidth,i_ToHeight);
??????????? //新建一個畫板
??????????? System.Drawing.Graphics gp = new System.Drawing.Graphics.FromImage(img_BitMap);
??????????? //設(shè)置高質(zhì)量插值法
??????????? gp.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
??????????? //設(shè)置高質(zhì)量、低速度呈現(xiàn)平滑程度
??????????? gp.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
??????????? //清空畫布并以透明背景色填充
??????????? gp.Clear(Color.Transparent);
??????????? //指定位置并按大小繪制原圖片的指定部分
??????????? gp.DrawImage(img_OriginalImage,new Rectangle(0,0,i_ToWidth,i_ToHeight),new Rectangle(x,y,i_OrignalWidth,i_OriginalHeight),GraphicsUnit.Pixel);
??????????? try
??????????? {
??????????????? //以JPG格式保存圖片
??????????????? img_BitMap.Save(str_ThumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg);
??????????? }
??????????? catch(Exception e)
??????????? {
??????????????? throw e;
??????????? }
??????????? finally
??????????? {
??????????????? img_OriginalImage.Dispose();
??????????????? img_BitMap.Dispose();
??????????????? gp.Dispose();
??????????? }
??????? }
??????? #endregion
轉(zhuǎn)載于:https://www.cnblogs.com/yaoo/archive/2010/10/09/1846520.html
總結(jié)
以上是生活随笔為你收集整理的Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JBPM4常见错误汇总
- 下一篇: 凯旋和怪盗喵