我們常常會需要為圖片加入浮水印,不論是在網站中或是在製作其他專案的時候,
當然你可以選擇使用 Adobe® Photoshop® 或其他的繪圖軟體來作, 不過.Net有GDI+,若是不好好利用是浪費了些o.o 所以現在就來個如何替圖片加入浮水印的簡單範例囉
首先準備好要被套用浮水應的原始圖檔(範例為Original.jpg)
![]() 再來你必需做一張你自已的浮水印圖檔, 背景透不透明是見人見智,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
|
文章分類 Category關於站長 About
大家來噗浪 Plurk武林高手連結 Links免責聲明 Disclaimer
|