WebImage類別其提供8大功能:
- 取得圖片
- 取得WebImage的屬性
- 圖片的縮放
- 翻轉
- 浮水印
- 裁剪
- 儲存
- 輸出
取得圖片
' 上傳中取得圖片 Dim picture1 As WebImage = WebImage.GetImageFromRequest("postedFileName") ' 從String(Path)取得圖片 Dim picture2 As WebImage = New WebImage(Server.MapPath("~/Content/images/kingkong.jpg")) ' 從Stream取得圖片 Dim picture3 As WebImage = New WebImage(System.IO.File.OpenRead(Server.MapPath("~/Content/Images/kingkong.png"))) ' 從Byte()取得圖片, 通常是Database, Dim picture4 As WebImage = New WebImage(picture3.GetBytes()) ' 複製取得圖片 Dim picture5 As WebImage = picture2.Clone()
取得WebImage的屬性
' 圖片名稱 picture2.FileName() ' 圖片高度 picture2.Height() ' 圖片格式,例如,JPEG, PNG ... picture2.ImageFormat() ' 圖片寬度 picture2.Width()
圖片的縮放
picture2.Risize(寬,高,"等比例縮放", "不超過原圖大小")
翻轉
' 水平翻轉 picture2.FlipHorizontal() ' 垂直翻轉 picture2.FlipVertical() ' 左轉90度 picture2.RotateLeft() ' 右轉90度 picture2.RotateRight()
浮水印
' 文字浮水印 ' AddTextWatermark("文字", "前景色", "文字大小", "字型樣式", "字型", "水平對齊", "垂直對齊", "透明度", "邊距") picture2.AddTextWatermark("KKBruce", "Black", 14, "Sign", "Arial", "Right", "Bottom", 60, 5)
水平對齊:
- Left
- Center
- Right
垂直對齊:
- NotSet (未設定)
- Top
- Middle
- Bottom
透明度:0 (100% 透明, 即看不見)
' 圖片浮水印,差異只有第一個參數 ' AddImageWatermark ("路徑", 寬, 高, "水平對齊", "垂直對齊", "透明度", "邊距") ' AddImageWatermark (WebImage , 寬, 高, "水平對齊", "垂直對齊", "透明度", "邊距") picture2.AddImageWatermark(picture3, 100, 100, "Left", "Top", 50, 5)
裁剪
' Crop(上, 左, 下, 右),上左下右各要裁剪多少 picture2.Crop(50, 50, 50, 50)
儲存
' Save("路徑", "圖片格式", "是否使用imageFormat格式來儲存") picture2.Save(Server.MapPath("~/Content/images"), "PNG", False)
輸出
' 把Picture2輸出為image picture2.Write()
WebImage範例
以下範例修改自http://weblogs.asp.net/gunnarpeipman/archive/2010/10/30/asp-net-mvc-3-building-simple-image-editor-using-webimage-helper.aspx,新增一個指定圖片名稱。
1. 先在預設的 HomeController.vb 中新增一個Sub的Action
Sub GetImage(FileName As String, horizontalFlip As String, verticalFlip As String, rotateLeft As String, rotateRight As String) Dim FullPath As String = "" ' 是否有傳入圖片名稱 If (Not String.IsNullOrWhiteSpace(FileName)) Then FullPath = "~/Content/images/" & FileName Else FullPath = "~/Content/images/kingkong.jpg" End If ' 取得圖片路徑 Dim imagePath As String = Server.MapPath(FullPath) ' WebImage物件 Dim image As WebImage = New WebImage(imagePath) ' 是否進行水平翻轉 If (Not String.IsNullOrWhiteSpace(horizontalFlip)) Then image = image.FlipHorizontal() End If ' 是否進行垂直翻轉 If (Not String.IsNullOrWhiteSpace(verticalFlip)) Then image = image.FlipVertical() End If ' 是否進行左90度翻轉 If (Not String.IsNullOrWhiteSpace(rotateLeft)) Then image = image.RotateLeft() End If ' 是否進行右90度翻轉 If (Not String.IsNullOrWhiteSpace(rotateRight)) Then image = image.RotateRight() End If ' 圖片輸出 image.Write() End Sub
在Index.aspx新增以下程式碼
<% Using (Html.BeginForm())%> <table border="0" cellpadding="0" cellspacing="5"> <tr> <td valign="top" rowspan="10"> <img src="/Home/GetImage" id="image" alt="KingKong" /> </td> <td valign="middle"><input type="checkbox" id="HorizontalFlip" value="1" /> Flip horizontally</td> </tr> <tr> <td valign="middle"><input type="checkbox" id="VerticalFlip" value="true" /> Flip vertically</td> </tr> <tr> <td valign="middle"><input type="checkbox" id="RotateLeft" value="true" /> Rotate left</td> </tr> <tr> <td valign="middle"><input type="checkbox" id="RotateRight" value="true" /> Rotate right</td> </tr> <tr> <td valign="middle">FileName:<input type="text" id="FileName" value="baby.jpg" /></td> </tr> <tr> <td><input type="button" value="Preview" onclick="updateImage()" /></td> </tr> </table> <% End Using%>
引用jQuery,然後新增以下Javascript:
function updateImage() { var req = '/Home/GetImage?'; var query = ''; if ($('#FileName').val() != null) query += '&FileName=' + $('#FileName').val(); if ($('#HorizontalFlip').is(':checked')) query += '&horizontalFlip=1'; if ($('#VerticalFlip').is(':checked')) query += '&verticalFlip=1'; if ($('#RotateLeft').is(':checked')) query += '&rotateLeft=1'; if ($('#RotateRight').is(':checked')) query += '&rotateRight=1'; req += query.substr(1); $('#image').attr("src", req); }
重點在<img src="/Home/GetImage" id="image" alt="KingKong" />這一行,我們透過jQuery傳入參數,動態改更src屬性,這樣我們就能針你所轉入的檔案名稱,進行對應的動作。例如,<img src="/Home/GetImage?FileName=baby.jpg&verticalFlip=1&rotateRight=1" id="image" alt="KingKong">。
請問你在使用 WebImage Resize 後的圖會不會最左邊和最上方會各出現一條灰色的線,如下連結的圖
回覆刪除https://www.dropbox.com/s/w61nh74amoacxj9/201210240110118698_m.jpg
你是說圖片外框最外面的灰色陰影框嗎?
回覆刪除是的,原圖並沒有那個灰色陰影框
刪除是的,你有遇到嗎
刪除由640*480輸出為320*240的結果:http://i.imgur.com/NtcmS.png
刪除我的原始程式碼:http://i.imgur.com/F9eRG.png
我輸出的圖片不會有灰色陰影框。你要不要由CSS查起,通常UI都是受CSS影響。