ウェブサイトのトップに商品を表示する場合、通常はサムネイルをクリックして入力し、大きな画像を表示します。
サムネイルには 2 つの問題があります。
1. 背景に大きい画像を1枚だけ送信すると、サムネイル表示時に大きい画像の幅と高さが固定されるだけとなり、サムネイルが変形するだけでなく、ページのアクセス速度も遅くなります。
2. 背景が毎回 2 つの写真をアップロードする場合、1 つは大きな写真、もう 1 つはサムネイルです。この場合、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/>"
InStr(sReturnInfo, "Error_") <= 0 の場合
sSmallPath = sReturnInfo '戻り情報は
'sSmallPathをデータベースに書き込みます
'
それ以外
Response.Write "詳細なエラー:"
ケースの選択 sReturnInfo
ケース「エラー_01」
Response.Write "<font color='red'>AspJpeg コンポーネントの作成に失敗しました。コンポーネントは正しくインストールおよび登録されていません</font>" & "<br/>"
ケース「エラー_02」
Response.Write "<font color='red'>元の画像が存在しません。s_OriginalPath パラメータに渡された値を確認してください</font>" & "<br/>"
ケース「エラー_03」
Response.Write "<font color='red'>サムネイルの保存に失敗しました。考えられる理由: サムネイルを保存するためのベース アドレスが存在しません。s_OriginalPath パラメータに渡された値を確認してください。ディレクトリへの書き込み権限がありません。ディスク領域が不十分です。< /font>" & "<br/>"
ケース「エラー_その他」
Response.Write "<font color='red'>不明なエラー</font>" & "<br/>"
エンドセレクト
応答.終了
%>
の場合は終了
元のファイル名: <%=sOriginalPath%><br/>
サムネイル ファイル名: <%=sSmallPath%><br/>
元の画像: <img src='<%=sOriginalPath%>' border=0><br/><br/>
サムネイル: <img src='<%=sSmallPath%>' border=0>
<%
'================================================ = ===============
'著者:laifangsong QQ:25313644
'機能: 指定された写真に基づいてサムネイルを生成します
注: 以下で説明する「パス」はすべて、この関数を呼び出すファイルに対する相対パスです。
'パラメータ:
' s_OriginalPath: 元の画像のパスの例:images/image1.gif
' s_BuildBasePath: 「/」で終わるかどうかに関係なく、イメージを生成するための基本パス (たとえば、images または image/)
' 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)
'================================================ = ===============
関数 BuildSmallPic(s_OriginalPath, s_BuildBasePath, n_MaxWidth, n_MaxHeight)
エラークリア
エラー時は次へ再開
'コンポーネントが登録されているかどうかを確認する
DimAspJpeg
Set AspJpeg = Server.Createobject("Persits.Jpeg")
Err.Number <> 0 の場合、次に
エラークリア
BuildSmallPic = "エラー_01"
終了関数
End If
'元の画像が存在するかどうかを確認します
Dims_MapOriginalPath
s_MapOriginalPath = Server.MapPath(s_OriginalPath)
AspJpeg.Open s_MapOriginalPath '元の画像を開きます
Err.Number <> 0 の場合、次に
エラークリア
BuildSmallPic = "エラー_02"
終了関数
End If
'サムネイルの幅と高さを比例的に取得します
Dim n_OriginalWidth, n_OriginalHeight '元の画像の幅と高さ
Dim n_BuildWidth, n_BuildHeight 'サムネイルの幅、高さ
ディム div1、div2
ディムn1、n2
n_OriginalWidth = AspJpeg.Width
n_OriginalHeight = AspJpeg.Height
div1 = n_OriginalWidth / n_OriginalHeight
div2 = n_OriginalHeight / n_OriginalWidth
n1 = 0
n2 = 0
n_OriginalWidth > n_MaxWidth の場合
n1 = n_OriginalWidth / n_MaxWidth
それ以外
n_BuildWidth = n_OriginalWidth
終了の場合
n_OriginalHeight > n_MaxHeight の場合
n2 = n_OriginalHeight / n_MaxHeight
それ以外
n_BuildHeight = n_OriginalHeight
終了の場合
n1 <> 0 または n2 <> 0 の場合
n1 > n2 の場合
n_BuildWidth = n_MaxWidth
n_BuildHeight = n_MaxWidth * div2
それ以外
n_BuildWidth = n_MaxHeight * div1
n_BuildHeight = n_MaxHeight
終了の場合
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」になります。
右の場合(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 '保存
Err.Number <> 0 の場合、次に
エラークリア
BuildSmallPic = "エラー_03"
終了関数
終了の場合
'--サムネイルをディスクに保存します
-- 'インスタンスをログアウトします
AspJpeg = なしを設定します
Err.Number <> 0 の場合、次に
BuildSmallPic = "エラー_その他"
エラークリア
終了の場合
BuildSmallPic = s_BuildBasePath & s_BuildFileName
関数の終了
%>