Ada banyak komponen ASP yang dapat menghasilkan thumbnail di internet. Jika ruang virtual Anda tidak mendukung mendaftarkan komponen baru, Anda mungkin merasa bahwa situs web Anda telah kehilangan kilau. Apakah Anda tahu langkah -langkah untuk menghasilkan thumbnail tanpa komponen? Mari kita pelajari dengan editor saluran teknologi baru yang salah!
Menghasilkan thumbnail tanpa komponen
Mari kita lihat dasar -dasarnya terlebih dahulu. Pertama -tama, kita tahu bahwa kode berikut ditampilkan pada halaman:
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 <% 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)
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)
kasus "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) = "width =" "" & ret (1) & "" "height =" "" & 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
Kasus "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
%>
Salin kode di atas untuk *4) >>
Di atas baik -baik saja!
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:
BORDER = "0" Lebar = <%= pxWidth%> Tinggi = <%= pxheight%>>
Sedangkan untuk format gambar, Anda dapat menggunakan <%= picsuffixname%>, dan 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. >
Artikel di atas adalah tentang metode operasi menghasilkan thumbnail tanpa komponen. Saya percaya setiap orang memiliki pemahaman tertentu. Jika Anda ingin mengetahui lebih banyak informasi teknis, silakan terus perhatikan saluran teknologi baru yang salah!