2009
08 11

asp.net如何在圖片上加入浮水印

17:18:00   閱讀數 ( 883 )   回應數 ( 0 )
我們常常會需要為圖片加入浮水印,不論是在網站中或是在製作其他專案的時候,
當然你可以選擇使用 Adobe® Photoshop® 或其他的繪圖軟體來作,
不過.Net有GDI+,若是不好好利用是浪費了些o.o

所以現在就來個如何替圖片加入浮水印的簡單範例囉
首先準備好要被套用浮水應的原始圖檔(範例為Original.jpg)
原始圖檔-可愛的小狗

再來你必需做一張你自已的浮水印圖檔,
背景透不透明是見人見智,Raz是覺得透明的漂亮些。
Raz製作的浮水印


我開了一個MakeWaterMark.aspx來測試程式碼,
目前執行目錄


在 .Net Framework 的 System.Drawing 中提供了許多方便的類別,
讓我們可以用很簡單的方式操作圖檔, 有興趣的人可以 多看看MSDN ,
我是在Page_Load事件中做測試, 接下來就看Code囉..

//記得要using以下幾個namespace
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

protected void Page_Load(object sender, EventArgs e)
{
	//設定原有圖檔與浮水印圖檔的位置(此例為執行頁面同目錄下)
	String filepath_original = Server.MapPath("Original.jpg");
	String filepath_watermark = Server.MapPath("WaterMark.png");

	//建立兩個圖檔的Image以供稍後操作
	using
	(
		System.Drawing.Image
		imageOriginal = System.Drawing.Image.FromFile(filepath_original),
		imageWatermark = System.Drawing.Image.FromFile(filepath_watermark)
	)
	{
		//自原有圖片建立新的Image
		System.Drawing.Image newImage = new Bitmap(imageOriginal);

		//由newImage中取得Graphics物件
		using( Graphics newGraphic = Graphics.FromImage(newImage) )
		{

			//為了讓浮水印出現在圖片右上角, 故要算出浮水印繪製的座標
			Int32 drawX = imageOriginal.Width - imageWatermark.Width;
			Int32 drawY = 0;

			//繪製浮水印
			newGraphic.DrawImageUnscaled(imageWatermark, new Point(drawX, drawY));

			//儲存有浮水印的新圖片
			newImage.Save(Server.MapPath("newImage.jpg"), ImageFormat.Jpeg);
		}
	}
}
執行後我們就會看到在目錄下多了一個 newImage.jpg
它就是套用浮水應的圖片囉.
套用浮水印後的圖檔
 

其實原理很簡單, 就是建立一張新圖檔, 跟原本的圖片一模一樣,
再來是計算你要放浮水印圖檔的位置 (x與y軸,簡單的數學)
然後把浮水印繪製上去, 最後將新圖檔Save至你要的位置就對囉.
示意圖 

當然你可以有很多種變化,
例如結合Generic Handler(.ashx)或是httpHandler來做動態產生,
結合一點Cache機制, 效能就不是問題了, 提供各位參考看看囉, Enjoy
2009-08-11 17:18:00 By RazgrizHsu       883 Visits

關於站長 About

RazgrizHsu 的大頭照o.o RazgrizHsu
程式設計之偉大航道
其中的一個小設計師
致力於開發技術研究
願能與各位一同成長!

大家來噗浪 Plurk

免責聲明 Disclaimer

  • 本站所轉載或引用之資料,其版權和知識產權屬於原始所有者。
  • 本站雖力求資料準確,但無法保證或擔保全數資料均準確無誤,許多資料具有時效或環境上的不同,在使用本站資料前應先行初步判斷,若是發現問題,歡迎您通知本站。
  • 在任何情況下,因本站所造成的直接、間接、偶然或其他衍生問題,本站不承擔任何責任。
RandomART程式道-88x31連結用Logo
Copyright © Runart.net 暴走的藝術 since 2009 - 2011
Design By Razgriz Hsu, Asp.net MVC 3 & SqlServer 2008R2.