在網站前台產品展示時,一般用縮圖,點選進入然後看到大圖。
縮圖帶來了兩個煩勞:
1.如果後台只傳一張大圖,顯示縮圖時只是將大圖固定寬度和高度,這樣不但造成縮圖變形,而且使得頁面訪問速度緩慢。
2.如果後台每次上傳時,都上傳兩張圖片,一張大圖,一張縮圖。這樣的話,沒有1中的問題,但是給後台人員造成很大麻煩。因為後台人員不一定知道處理生成縮圖;即使知道並能快速處理,也浪費掉一些時間。
下面的程式碼可以幫您用AspJpeg元件,按寬高比例,真正產生縮圖
AspJpeg 元件下載:http: //www.aspjpeg.com/download.html
AspJpeg 元件使用: http://www.mydw.cn/tech/1/766.html
註冊碼:48958-77556-02411
<%
Dim sOriginalPath
sOriginalPath = "images/1.gif"
'原圖片路徑一般上傳完畢後獲取,或從資料庫取得
Dim sReturnInfo, sSmallPath '函數傳回資訊, 縮圖路徑
sReturnInfo = BuildSmallPic(sOriginalPath, "images", 100, 100)
Response.Write "回傳訊息:" & sReturnInfo & "<br/>"
If InStr(sReturnInfo, "Error_") <= 0 Then
sSmallPath = sReturnInfo '回傳訊息就是
'將sSmallPath寫入資料庫
'
Else
Response.Write "詳細錯誤:"
Select Case sReturnInfo
Case "Error_01"
Response.Write "<font color='red'>建立AspJpeg元件失敗,沒有正確安裝註冊該元件</font>" & "<br/>"
Case "Error_02"
Response.Write "<font color='red'>原始圖片不存在,檢查s_OriginalPath參數傳入值</font>" & "<br/>"
Case "Error_03"
Response.Write "<font color='red'>縮圖記憶體失敗.可能原因:縮圖保存基底位址不存在,檢查s_OriginalPath參數傳入值;對目錄沒有寫權限;磁碟空間不足</font>" & "<br/>"
Case "Error_Other"
Response.Write "<font color='red'>未知錯誤</font>" & "<br/>"
End Select
Response.End
End If
%>
原檔名:<%=sOriginalPath%><br/>
縮圖檔名:<%=sSmallPath%><br/>
原圖:<img src='<%=sOriginalPath%>' border=0><br/><br/>
縮圖:<img src='<%=sSmallPath%>' border=0>
<%
'================================================== ===============
'Author:laifangsong QQ:25313644
'功能:依照指定圖片產生縮圖
'注意:以下提到的「路徑」都是值相對於呼叫本函數的檔案的相對路徑
'參數:
' s_OriginalPath: 原圖路徑例:images/image1.gif
' s_BuildBasePath: 產生圖片的基底路徑,不論是否以「/」結尾均可例:images或images/
' n_MaxWidth: 產生圖片最大寬度
' 如果在前台顯示的縮圖是100*100,這裡n_MaxWidth=100,n_MaxHeight=100.
' n_MaxHeight: 產生圖片最大高度
'傳回值:
' 傳回產生後的縮圖的路徑
'錯誤處理:
' 若函數執行過程中發生錯誤,將傳回錯誤代碼,錯誤代碼以「Error」開頭
' Error_01:建立AspJpeg元件失敗,沒有正確安裝註冊該元件
' Error_02:原始圖片不存在,檢查s_OriginalPath參數傳入值
' Error_03:縮圖記憶體失敗.可能原因:縮圖保存基底位址不存在,檢查s_OriginalPath參數傳入值;對目錄沒有寫權限;磁碟空間不足
' Error_Other:未知錯誤
'呼叫範例:
' Dim sSmallPath '縮圖路徑
' sSmallPath = BuildSmallPic("images/image1.gif", "images", 100, 100)
'================================================== ===============
Function BuildSmallPic(s_OriginalPath, s_BuildBasePath, n_MaxWidth, n_MaxHeight)
Err.Clear
On Error Resume Next
'檢查組件是否已註冊
Dim AspJpeg
Set AspJpeg = Server.Createobject("Persits.Jpeg")
If Err.Number <> 0 Then
Err.Clear
BuildSmallPic = "Error_01"
Exit Function
End If
'檢查原圖是否存在
Dim s_MapOriginalPath
s_MapOriginalPath = Server.MapPath(s_OriginalPath)
AspJpeg.Open s_MapOriginalPath '開啟原圖
If Err.Number <> 0 Then
Err.Clear
BuildSmallPic = "Error_02"
Exit Function
End If
'按比例取得縮圖寬度和高度
Dim n_OriginalWidth, n_OriginalHeight '原圖寬度、高度
Dim n_BuildWidth, n_BuildHeight '縮圖寬度、高度
Dim div1, div2
Dim n1, n2
n_OriginalWidth = AspJpeg.Width
n_OriginalHeight = AspJpeg.Height
div1 = n_OriginalWidth / n_OriginalHeight
div2 = n_OriginalHeight / n_OriginalWidth
n1 = 0
n2 = 0
If n_OriginalWidth > n_MaxWidth Then
n1 = n_OriginalWidth / n_MaxWidth
Else
n_BuildWidth = n_OriginalWidth
End If
If n_OriginalHeight > n_MaxHeight Then
n2 = n_OriginalHeight / n_MaxHeight
Else
n_BuildHeight = n_OriginalHeight
End If
If n1 <> 0 Or n2 <> 0 Then
If n1 > n2 Then
n_BuildWidth = n_MaxWidth
n_BuildHeight = n_MaxWidth * div2
Else
n_BuildWidth = n_MaxHeight * div1
n_BuildHeight = n_MaxHeight
End If
End If
'指定寬度和高度生成
AspJpeg.Width = n_BuildWidth
AspJpeg.Height = n_BuildHeight
'--將縮圖光碟開始--
Dim pos, s_OriginalFileName, s_OriginalFileExt '位置、原始檔案名稱、原始檔案副檔名
pos = InStrRev(s_OriginalPath, "/") + 1
s_OriginalFileName = Mid(s_OriginalPath, pos)
pos = InStrRev(s_OriginalFileName, ".")
s_OriginalFileExt = Mid(s_OriginalFileName, pos)
Dim s_MapBuildBasePath, s_MapBuildPath, s_BuildFileName '縮圖絕對路徑、縮圖檔名
Dim s_EndFlag '小圖片檔案名稱結尾識別例: 如果大圖片檔案名稱是“image1.gif”,結尾標識是“_small”,那麼小圖片檔案名稱就是“image1_small.gif”
If Right(s_BuildBasePath, 1) <> "/" Then s_BuildBasePath = s_BuildBasePath & "/"
s_MapBuildBasePath = Server.MapPath(s_BuildBasePath)
s_EndFlag = "_small" '可以自訂,只要能區別大小圖片即可
s_BuildFileName = Replace(s_OriginalFileName, s_OriginalFileExt, "") & s_EndFlag & s_OriginalFileExt
s_MapBuildPath = s_MapBuildBasePath & "" & s_BuildFileName
AspJpeg.Save s_MapBuildPath '儲存
If Err.Number <> 0 Then
Err.Clear
BuildSmallPic = "Error_03"
Exit Function
End If
'--將縮圖記憶體結束--
'登出實例
Set AspJpeg = Nothing
If Err.Number <> 0 Then
BuildSmallPic = "Error_Other"
Err.Clear
End If
BuildSmallPic = s_BuildBasePath & s_BuildFileName
End Function
%>