在網站前台產品展示時,一般用縮略圖,點擊進入然後看到大圖。
縮略圖帶來了兩個煩勞:
1.如果後台只傳一張大圖,顯示縮略圖時只是將大圖固定寬度和高度,這樣不但造成縮略圖變形,而且使得頁面訪問速度緩慢。
2.如果後台每次上傳時,都上傳兩張圖片,一張大圖,一張縮略圖。這樣的話,沒有1中的問題,但是給後台人員造成很大麻煩。因為後台人員並不一定知道處理生成縮略圖;即使知道並能快速處理,也浪費掉一些時間。
下面的代碼可以幫您用ASPJpeg組件,按寬高比例,真正生成縮略圖
注冊碼: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
%>