Direkomendasikan: ASP menyimpan file jarak jauh ke lokal % Fungsi saveremoteFile (localfileName, remoteFileUrl) saveremoteFile = true red iklan, pengambilan, getRemotedata set retrieval = server.createObject (microsoft.xmlhttp) dengan retrieval .Open get, remoteFileurl, false,.
Ada banyak komponen ASP yang menghasilkan thumbnail di internet. Jika ruang virtual Anda tidak mendukung mendaftarkan komponen baru, Anda mungkin merasa bahwa situs web Anda kehilangan warnanya. Xinqing tidak berbakat, dan dikombinasikan dengan sumber daya online, ia menulis program thumbnail bebas komponen hanya untuk referensi.
Mari kita lihat dasar -dasarnya terlebih dahulu. Pertama -tama, kita tahu bahwa kode berikut ditampilkan pada halaman:
<img src = pic.gif border = 0 lebar = 300 tinggi = 260>
SRC adalah jalur gambar, perbatasan mengontrol lebar tepi gambar, lebar adalah panjang gambar, dan tinggi adalah ketinggian gambar. Generasi thumbnail sebenarnya meningkatkan ukuran aslinya. Tetapi secara umum, untuk meminimalkan distorsi, kami akan skala untuk skala. Oleh karena itu, mendapatkan panjang dan lebar gambar menjadi fokus menghasilkan thumbnail.
Berikut adalah langkah-langkah untuk menulis generasi thumbnail bebas komponen:
1. Dapatkan ukuran gambar tanpa komponen
Saya melihat sebuah artikel menggunakan kode ASCII untuk mendapatkan ukuran gambar tanpa komponen ketika saya pertama kali belajar ASP. Kemudian saya mencobanya dan menemukan bahwa ketika saya mendapatkan ukuran gambar seperti JPG, saya memeriksanya secara online dan menemukan bahwa banyak situs web mencetak ulang program ini, tetapi tidak ada yang menunjukkan kekurangan program ini, apalagi solusi untuk kekurangan. Kemudian saya pergi Google dan akhirnya menemukan sebuah artikel yang memperkenalkan penggunaan adodb.stream untuk mendapatkan ukuran gambar. Saya mencobanya dengan memodifikasi kode di dalam sesuai dengan metode yang diperkenalkan. Efeknya sangat bagus. Sekarang saya akan mengeluarkannya dan membaginya dengan Anda:
Gunakan adodb.stream untuk mendapatkan kelas umum untuk ukuran gambar
<%
'////////////// GPS: Dapatkan gambar ukuran ///////////////
'//////////////////////////////////////////
'/////////// dikutip oleh Leon (xinqing) 11 Agustus 2005 //////////////////////////
GPS kelas
Redup aso
Private Sub Class_initialize
Set aso = createObject (adodb.stream)
aso.mode = 3
aso.type = 1
aso.open
Akhir sub
Sub Class_Terminate pribadi
atur aso = tidak ada
Akhir sub
Fungsi pribadi bin2str (bin)
Redup i, str
Untuk i = 1 ke lenb (bin)
clow = midb (bin, i, 1)
Jika ASCB (Clow) <128 lalu
Str = str & chr (ascb (clow))
Kalau tidak
I = i+1
Jika i <= lenb (bin) maka str = str & chr (ascw (midb (bin, i, 1) & clow)))
akhiri jika
Berikutnya
Bin2str = str
Fungsi akhir
Fungsi pribadi num2str (num, basis, lensa)
'GPS (2005-8-11)
redup red
ret =
While (num> = base)
ret = (basis mod num) & ret
num = (num - num mod basis)/basis
pergi ke
Num2str = right (string (lensa, 0) & num & ret, lensa)
Fungsi akhir
Fungsi pribadi str2num (str, base)
'GPS (2005-8-11)
redup red
ret = 0
untuk i = 1 ke len (str)
ret = ret *basis + cint (mid (str, i, 1))
Berikutnya
Str2num = ret
Fungsi akhir
Binval fungsi pribadi (bin)
'GPS (2002-8-11)
redup red
ret = 0
untuk i = lenb (bin) hingga 1 langkah -1
ret = ret *256 + ascb (midb (bin, i, 1))
Berikutnya
Binval = ret
Fungsi akhir
Fungsi pribadi binval2 (bin)
'GPS (2002-8-11)
redup red
ret = 0
untuk i = 1 ke lenb (bin)
ret = ret *256 + ascb (midb (bin, i, 1))
Berikutnya
Binval2 = ret
Fungsi akhir
'/// Berikut ini adalah kode panggilan ///
Function getImageSize (filespec)
'GPS (2002-8-11)
red ret (3)
Aso.LoadFromFile (FileSpec)
bflag = aso.read (3)
Pilih case hex (binval (bflag))
Kasus 4E5089:
Aso.Read (15)
ret (0) = png
ret (1) = binval2 (aso.read (2))
Aso.Read (2)
ret (2) = binval2 (aso.read (2))
Kasus 464947:
Aso.read (3)
ret (0) = gif
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
Kasus 535746:
Aso.Read (5)
bindata = aso.read (1)
sconv = num2str (ascb (bindata), 2,8)
nbits = str2num (kiri (sconv, 5), 2)
sconv = mid (sconv, 6)
while (len (sconv) <nbits*4)
bindata = aso.read (1)
sconv = sconv & num2str (ascb (bindata), 2,8)
pergi ke
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)
case ffd8ff:
Mengerjakan
do: p1 = binval (aso.read (1)): loop sementara p1 = 255 dan bukan aso.eos
Jika p1> 191 dan p1 <196 maka keluarlah lakukan lain aso.read (binval2 (aso.read (2))-2)
do: p1 = binval (aso.read (1)): loop sementara p1 <255 dan bukan aso.eos
Loop saat benar
Aso.read (3)
ret (0) = jpg
ret (2) = binval2 (aso.read (2))
ret (1) = binval2 (aso.read (2))
kasus lain:
Jika kiri (bin2str (bflag), 2) = bm lalu
Aso.Read (15)
ret (0) = BMP
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
kalau tidak
ret (0) =
akhiri jika
Akhiri Pilih
ret (3) = lebar = & ret (1) & tinggi =
& ret (2) &
getImageSize = ret
Fungsi akhir
Kelas akhir
%>
Salin kode di atas untuk menghasilkan file gps.asp, sehingga kelas umum tanpa komponen untuk mendapatkan ukuran gambar OK.
2. Dapatkan jalur gambar
Karena lebih dari satu gambar dan gambar perlu disimpan dengan cara yang diklasifikasikan, kami merancang bidang imgurl yang menyimpan jalur relatif gambar dalam database. Kami meletakkan semua gambar yang diunggah dalam folder yang disebut gambar (untuk cara mengunggah gambar tanpa komponen, saya tidak akan banyak bicara). Sekarang mari kita merancang halaman showimg.asp untuk menampilkan thumbnail dan informasi terkait. Desain spesifiknya adalah sebagai berikut:
gambar:
Format gambar:
Ukuran gambar:
Ukuran gambar:
Jumlah klik:
Di bawah ini, kami mendapatkan jalur absolut ke gambar. Kodenya adalah sebagai berikut:
<%
'///// Dapatkan jalur absolut showimg.asp /////
Curfile redup
Curfile = server.mappath (request.serverVariable (path_info))
Redup curfilename, nama file
'///// jalur relatif gambar (disimpan dalam database)
Cufilename = RS (IMGURL)
'///// Karena showimg.asp berada di direktori yang sama dengan gambar, kami menggunakan instrrev untuk mendapatkan jalur gambar /////
FileName = Kiri (Curfile, Instrrev (Curfile,)) & Cufilename
'///// Buat GPS Entity //////
Redup getpicsize
Setel getPicSize = GPS baru
Set FS = Server.CreateObject (Scripting.FilesystemObject)
'///// Dapatkan tipe gambar /////
Redup picsuffixname
Picsuffixname = fs.getextensionName (nama file)
Redup pd '// dimensi gambar
Redup pwidth, pheight
Pilih case picsuffixname
Case GIF, BMP, JPG, PNG:
'///// Panggil fungsi getImageSize di kelas umum GPS untuk mendapatkan ukuran gambar /////
PD = getPicsize.getImageSize (nama file)
Pwidth = Pd (1) '// Dapatkan lebar gambar
Pheight = Pd (2) '// Dapatkan tinggi gambar
Kasus swf
PD = getPicsize.getImageSize (nama file)
Pwidth = Pd (1) '// Dapatkan lebar flash
Pheight = Pd (2) '// Dapatkan tinggi flash
Kasus lain
Akhiri Pilih
Atur fs = tidak ada
Atur getPicsize = tidak ada
%>
Tidak apa -apa untuk menyalin kode di atas ke <body>!
Tentu saja, beberapa orang mungkin mengatakan bahwa Anda tidak perlu menggunakan path_info untuk mendapatkan jalan. Anda bisa menggunakan server.mappath () secara langsung. Haha, semua orang memiliki preferensi sendiri. Alasan utamanya adalah saya dapat menggunakan path_info untuk mengimplementasikan beberapa fungsi FSO, tetapi saya belum melakukannya dengan server.mappath (), jadi saya telah menggunakan ini.
3. Tentukan ukuran thumbnail
Bagian kode ini berbeda dari pendapatnya sendiri. Pertama -tama, kita perlu menentukan kisaran ukuran tampilan thumbnail, misalnya: 300x260, kode dapat ditulis seperti ini:
<%
Redup pxwidth, pxheight
Dim pp '// proporsi
Jika pwidth = 0 atau pwidth = lalu
Pxwidth = 0
PxHeight = 0
Kalau tidak
Pp = formatNumber (pwidth/pheight, 2) '// add-width rasio
Akhiri jika
Jika pwidth> = pheight maka
Jika pwidth> = 300 lalu
PXWIDTH = 300
PxHeight = FormatNumber (300/pp, 0)
Kalau tidak
Pxwidth = pwidth
Pxheight = pheight
Akhiri jika
Kalau tidak
Jika pheight> = 260 lalu
PxHeight = 260
Pxwidth = formatNumber (260*pp, 0)
Kalau tidak
Pxwidth = pwidth
Pxheight = pheight
Akhiri jika
Akhiri jika
%>
Tulis kode di atas segera setelah langkah kedua. Kode saat menelepon adalah sebagai berikut:
<img src = <%= curfileName%> border = 0 lebar = <%= pxwidth%>
tinggi = <%= pxheight%>>
Adapun format gambar, ukuran gambar dapat ditulis sebagai
<%
Response.Write PxWidth & X & PxHeight
%>
Ukuran gambar dapat dicapai dengan menggunakan fso.getFileSize (nama file), sedangkan jumlah klik dapat dicapai hanya dengan menggunakan pernyataan SQL, sehingga pengkodean spesifik tidak akan lagi dijelaskan.
Dengan cara ini, program thumbnail bebas komponen akan ditulis, yang mungkin sedikit bijaksana, tetapi selama Anda dapat menguasai metode ini, itu akan sangat ditingkatkan.
Bagikan: Unggah bebas komponen ASP dengan bilah kemajuan nyata Unggah bebas komponen ASP dengan bilah kemajuan nyata tanpa unggahan bebas komponen dengan bilah kemajuan nyata, di mana unggah.asp adalah kode inti. Kecuali jika Anda perlu kebutuhan khusus, demo.htm adalah demonstrasi tanpa bilah kemajuan refresh (IE5.5+ dukungan). Demo.asp adalah file yang diunggah oleh demo.asp. Karena demo membutuhkannya, itu hanya diunggah dalam demo.asp dan tidak menyimpannya. Jika Anda perlu menyimpannya, Anda hanya perlu menghapus yang relevan