推奨:ASPはリモートファイルをローカルに保存します%function saveremotefile(localfilename、remotefileurl)saveremotefile = true dim ads、retireval、getremotedata set retireval = server.createobject(microsoft.xmlhttp)
インターネットでサムネイルを生成する多くのASPコンポーネントがあります。仮想スペースが新しいコンポーネントの登録をサポートしていない場合、あなたのウェブサイトがその色を失っていると感じるかもしれません。 Xinqingは才能がなく、オンラインリソースと組み合わされて、彼女はリファレンスのためにのみコンポーネントのないサムネイルプログラムを書きました。
最初に基本を見てみましょう。まず、次のコードがページに表示されていることがわかります。
<img src = pic.gif border = 0 width = 300 height = 260>
SRCは画像パスであり、境界線は画像のエッジ幅を制御し、幅は画像の長さ、高さは画像の高さです。サムネイルの生成は、実際には元のサイズでスケーリングされています。しかし、一般的に、歪みを最小限に抑えるために、スケーリングします。したがって、画像の長さと幅を取得することは、サムネイルを生成する焦点になります。
コンポーネントのないサムネイルの世代を書くための手順は次のとおりです。
1.コンポーネントなしで画像サイズを取得します
ASCIIコードを使用して、ASPを最初に学んだときにコンポーネントなしで画像サイズを取得する記事を見ました。後で試してみて、JPGのような画像のサイズを取得したときにオンラインでチェックして、多くのWebサイトがこのプログラムを転載したことを発見しましたが、それらのどれもこのプログラムの欠陥を指摘していないことを発見しました。その後、私はグーグルでグーグルで行き、ついにadodb.streamの使用を導入して画像サイズを取得する記事を見つけました。導入された方法に従って内部のコードを変更して試しました。効果は本当に良いです。今、私はそれを取り出してあなたと共有します:
adodb.streamを使用して、画像サイズの一般クラスを取得します
<%
'///////////GPS:写真サイズ/////////////
'/////////////////////////
'/////////レオン(Xinqing)2005年8月11日///////////
クラスGPS
薄暗いアソ
private sub class_initialize
aso = createObject(adodb.stream)をset
aso.mode = 3
aso.type = 1
aso.open
End Sub
プライベートSub Class_terminate
ASO =何も設定しません
End Sub
プライベート機能bin2str(bin)
dim i、str
i = 1にレンブ(ビン)へ
clow = midb(bin、i、1)
ASCB(Clow)<128の場合
str = str&chr(ascb(clow))
それ以外
i = i+1
i <= lenb(bin)の場合、str = str&chr(ascw(bin、i、1)&clow))
ifを終了します
次
bin2str = str
エンド関数
プライベート関数num2str(num、base、lens)
'GPS(2005-8-11)
dim ret
ret =
while(num> = base)
ret =(num modベース)&ret
num =(num -num modベース)/ベース
ウェンド
num2str = right(string(lens、0)&num&ret、lens)
エンド関数
プライベート関数str2num(str、base)
'GPS(2005-8-11)
dim ret
ret = 0
i = 1 to len(str)
ret = ret *base + cint(mid(str、i、1))
次
str2num = ret
エンド関数
プライベート機能ビンバル(ビン)
'GPS(2002-8-11)
dim ret
ret = 0
i = lenb(bin)から1ステップ-1の場合
ret = ret *256 + ascb(midb(bin、i、1))
次
binval = ret
エンド関数
プライベート機能binval2(bin)
'GPS(2002-8-11)
dim ret
ret = 0
i = 1にレンブ(ビン)へ
ret = ret *256 + ascb(midb(bin、i、1))
次
binval2 = ret
エンド関数
'///次のものは呼び出しコード///
function getImagesize(fileSpec)
'GPS(2002-8-11)
dim ret(3)
aso.loadfromfile(fileSpec)
bflag = aso.read(3)
ケースヘックス(binval(bflag))を選択します
ケース4E5089:
aso.read(15)
ret(0)= png
ret(1)= binval2(aso.read(2))
aso.read(2)
ret(2)= binval2(aso.read(2))
ケース464947:
aso.read(3)
ret(0)= gif
ret(1)= binval(aso.read(2))
ret(2)= binval(aso.read(2))
ケース535746:
aso.read(5)
bindata = aso.read(1)
sconv = num2str(ascb(bindata)、2,8)
nbits = str2num(左(sconv、5)、2)
sconv = mid(sconv、6)
while(len(sconv)<nbits*4)
bindata = aso.read(1)
sconv = sconv&num2str(ascb(bindata)、2,8)
ウェンド
ret(0)= swf
ret(1)= int(abs(str2num(mid(sconv、1*nbits+1、nbits)、2)-str2num(mid(sconv、0*nbits+1、nbits)、2))/20)
ret(2)= int(abs(str2num(mid(sconv、3*nbits+1、nbits)、2)-str2num(mid(sconv、2*nbits+1、nbits)、2))/20)
ケースFFD8FF:
する
do:p1 = binval(aso.read(1)):ループ中はp1 = 255であり、aso.eosではありません
p1> 191およびp1 <196の場合、exit exit aso.read(binval2(aso.read(2))-2)を行います。
do:p1 = binval(aso.read(1)):loop wile p1 <255およびaso.eosではありません
真実でループ
aso.read(3)
ret(0)= jpg
ret(2)= binval2(aso.read(2))
ret(1)= binval2(aso.read(2))
その他:
残っている場合(bin2str(bflag)、2)= bmその後
aso.read(15)
ret(0)= bmp
ret(1)= binval(aso.read(4))
ret(2)= binval(aso.read(4))
それ以外
ret(0)=
ifを終了します
[選択]を終了します
ret(3)= width =&ret(1)&height =
&ret(2)&
getImagesize = ret
エンド関数
エンドクラス
%>
上記のコードをコピーしてgps.aspファイルを生成します。これにより、画像サイズを取得するコンポーネントがない一般クラスが問題ありません。
2。画像パスを取得します
複数の写真と写真を分類された方法で保存する必要があるため、データベースに写真の相対パスを保存するフィールドImgurlを設計しました。アップロードされたすべての画像を画像と呼ばれるフォルダーに入れます(コンポーネントなしで画像をアップロードする方法については、あまり言いません)。次に、showimg.aspページを設計して、サムネイルと関連情報を表示しましょう。特定のデザインは次のとおりです。
写真:
画像形式:
画像サイズ:
画像サイズ:
クリック数:
以下では、画像への絶対的なパスを取得します。コードは次のとおりです。
<%
'///// showimg.asp ////の絶対パスを取得する
薄暗い呪い
curfile = server.mappath(request.servervariables(path_info))
Dim CurfileName、ファイル名
'/////画像の相対パス(データベースに保存)
cufilename = rs(imgurl)
'////
filename = left(curfile、instrrev(curfile、))&cufilename
'////
dim getpicsize
getpicsize = new GPSを設定します
fs = server.createObject(scripting.filesystemObject)を設定します
'/////画像タイプを取得////
Dim PicsuffixName
picsuffixname = fs.getExtensionName(filename)
dim pd '//画像寸法
薄暗いpwidth、pheight
ケースPicsuffixNameを選択します
ケースGIF、BMP、JPG、PNG:
'/////GPS一般クラスのgetImagesize関数を呼び出して画像サイズ////を取得する
pd = getpicsize.getimagesize(filename)
pwidth = pd(1) '//画像幅を取得します
pheight = pd(2) '//画像の高さを取得します
ケースSWF
pd = getpicsize.getimagesize(filename)
pwidth = pd(1) '//フラッシュ幅を取得します
pheight = pd(2) '//フラッシュの高さを取得します
ケース他のケース
[選択]を終了します
fs = Nothingを設定します
getpicsize = Nothingを設定します
%>
上記のコードを<body>にコピーしても構いません!
もちろん、一部の人々は、パスを取得するためにpath_infoを使用する必要はないと言うかもしれません。 server.mappath()を直接使用できます。ハハ、誰もが自分の好みを持っています。主な理由は、PATH_INFOを使用してFSOのいくつかの関数を実装できることですが、server.mappath()でそれを実行していないため、これを使用しています。
3.サムネイルサイズを定義します
コードのこの部分は、自分の意見とは異なります。まず、サムネイルディスプレイのサイズ範囲を指定する必要があります。たとえば、300x260、コードは次のように記述できます。
<%
薄暗いpxwidth、pxheight
dim pp '//割合
pwidth = 0またはpwidth = thenの場合
pxwidth = 0
pxheight = 0
それ以外
pp = formatnumber(pwidth/pheight、2) '// add-width比
ifを終了します
pwidth> = pheightの場合
pwidth> = 300の場合
pxwidth = 300
pxheight = formatnumber(300/pp、0)
それ以外
pxwidth = pwidth
pxheight = pheight
ifを終了します
それ以外
pheight> = 260の場合
pxheight = 260
pxwidth = formatnumber(260*pp、0)
それ以外
pxwidth = pwidth
pxheight = pheight
ifを終了します
ifを終了します
%>
2番目のステップの直後に上記のコードを記述します。呼び出しのときのコードは次のとおりです。
<img src = <%= curfilename%> border = 0 width = <%= pxwidth%>
高さ= <%= pxheight%>>
画像形式に関しては、画像サイズは
<%
Response.write pxwidth&x&pxheight
%>
画像サイズはFSO.getFilesize(filename)を使用して実現できますが、クリック数は単にSQLステートメントを使用して実現できます。したがって、特定のエンコードは説明されなくなります。
このようにして、コンポーネントフリーのサムネイルプログラムが作成されますが、これは少し賢明かもしれませんが、メソッドをマスターできる限り、大幅に改善されます。
共有:ASPコンポーネントフリーのアップロードReal Progress Bar ASPコンポーネントフリーアップロードReal Progress Barを使用して、Real Progress Barを使用してコンポーネントフリーアップロードを使用します。特別なニーズが必要な場合を除き、Demo.htmは更新プログレスバー(IE5.5+サポート)のないデモです。 demo.aspは、demo.aspによってアップロードされたファイルです。デモに必要なため、demo.aspにのみアップロードされ、保存しません。保存する必要がある場合は、関連するものを削除するだけです