Ada banyak komponen ASP di Internet yang menghasilkan thumbnail. Jika ruang virtual Anda tidak mendukung pendaftaran komponen baru, Anda mungkin merasa situs web Anda kehilangan kehebatannya. Saya tidak terlalu berbakat, jadi saya menggabungkan sumber daya online untuk menulis program pembuatan thumbnail tanpa komponen untuk referensi saja.
Mari kita lihat dasar-dasarnya terlebih dahulu. Pertama kita ketahui bahwa kode untuk menampilkan gambar pada halaman tersebut adalah sebagai berikut:
<img src=pic.gif batas=0 lebar=300 tinggi=260>
src adalah jalur gambar, border mengontrol lebar tepi gambar, lebar adalah panjang gambar, dan tinggi adalah tinggi gambar. Pembuatan thumbnail sebenarnya disesuaikan dengan ukuran aslinya. Namun secara umum untuk meminimalkan distorsi, kami akan melakukan penskalaan secara proporsional. Oleh karena itu, mendapatkan dimensi panjang dan lebar gambar menjadi fokus pembuatan thumbnail.
Berikut adalah langkah-langkah untuk menulis pembuatan thumbnail tanpa komponen:
1. Dapatkan ukuran gambar tanpa komponen
Belum lama ini ketika saya pertama kali belajar ASP, saya melihat artikel yang menggunakan kode ASCII untuk mendapatkan ukuran gambar tanpa komponen. Kemudian saya mencobanya dan menemukan bahwa ukuran gambar jpg tidak dapat ditampilkan dengan benar. Saya memeriksa secara online dan menemukan bahwa banyak situs web yang mencetak ulang program ini, tetapi tidak ada yang menunjukkan kekurangan dari program ini, apalagi memperbaikinya terselesaikan. Nanti saya googling lagi dan akhirnya menemukan artikel yang memperkenalkan penggunaan ADODB.stream untuk mendapatkan ukuran gambar. Sesuai dengan metode yang diperkenalkan, saya memodifikasi kode di dalamnya dan mencobanya dengan kamu.
Gunakan ADODB.stream untuk mendapatkan kelas umum ukuran gambar
<%
'///////////// GPS: Dapatkan Ukuran Gambar ////////////////
'///////////////Gunakan ADODB.stream untuk mendapatkan ukuran gambar///////////////
'/////////Dikutip Oleh Leon (心清) 11 Agustus 2005//////////
GPS Kelas
Redupkan juga
Sub Kelas Pribadi_Inisialisasi
Setel aso=CreateObject(Adodb.Stream)
aso.Mode=3
aso.Tipe=1
aso.Buka
Akhiri Sub
Sub Kelas Pribadi_Terminate
atur aso=tidak ada
Akhiri Sub
Fungsi Pribadi Bin2Str(Bin)
Redupkan aku, Str
Untuk I=1 sampai LenB(Bin)
clow=MidB(Bin,I,1)
jika AscB(clow)<128 maka
Str = Str & Chr(ASCB(badut))
Kalau tidak
saya=saya+1
jika saya <= LenB(Bin) maka Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
akhirJika
Berikutnya
Bin2Str = Str
Fungsi Akhir
Fungsi Pribadi Num2Str(num,base,lens)
'GPS (2005-8-11)
redup ret
mundur =
while(bil>=basis)
ret = (jumlah basis mod) & ret
num = (num - num basis mod)/basis
pergi ke
Num2Str = kanan(string(lensa,0) & angka & ret,lensa)
Fungsi Akhir
Fungsi Pribadi Str2Num(str,base)
'GPS (2005-8-11)
redup ret
kembali = 0
untuk i=1 hingga len(str)
ret = ret *base + cint(tengah(str,i,1))
Berikutnya
Str2Num=ret
Fungsi Akhir
Fungsi Pribadi BinVal(bin)
'GPS (2002-8-11)
redup ret
kembali = 0
untuk i = lenb(bin) ke 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 ret
kembali = 0
untuk i = 1 sampai lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
Berikutnya
BinVal2=ret
Fungsi Akhir
'///Berikut ini kode panggilannya///
Fungsi getImageSize(filespec)
'GPS (2002-8-11)
redup kembali(3)
aso.LoadFromFile(spesifikasi file)
bBendera=aso.baca(3)
pilih kasus hex(binVal(bFlag))
kasus 4E5089:
aso.baca(15)
kembali(0)=PNG
ret(1)=BinVal2(aso.baca(2))
aso.baca(2)
ret(2)=BinVal2(aso.baca(2))
kasus 464947:
aso.baca(3)
kembali(0)=GIF
ret(1)=BinVal(aso.baca(2))
ret(2)=BinVal(aso.baca(2))
kasus 535746:
aso.baca(5)
binData=aso.Baca(1)
sConv=Nomor2Str(ascb(binData),2,8)
nBits=Str2Num(kiri(sConv,5),2)
sKonv=pertengahan(sKonv,6)
while(len(sConv)<nBits*4)
binData=aso.Baca(1)
sConv=sConv&Nomor2Str(ascb(binData),2,8)
pergi ke
kembali(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
lakukan: p1=binVal(aso.Read(1)): loop while p1=255 dan bukan aso.EOS
jika p1>191 dan p1<196 lalu keluar, lakukan lagi aso.read(binval2(aso.Read(2))-2)
lakukan:p1=binVal(aso.Read(1)):loop while p1<255 dan bukan aso.EOS
loop sementara benar
aso.Baca(3)
kembali(0)=JPG
ret(2)=binval2(aso.Baca(2))
ret(1)=binval2(aso.Baca(2))
kasus lain:
jika kiri(Bin2Str(bFlag),2)=BM maka
aso.Baca(15)
kembali(0)=BMP
ret(1)=binval(aso.Baca(4))
ret(2)=binval(aso.Baca(4))
kalau tidak
kembali(0)=
berakhir jika
akhir pilih
ret(3)=lebar= & ret(1) & tinggi=
& kembali(2)&
getimagesize=ret
Fungsi Akhir
Kelas Akhir
%>
Salin kode di atas untuk menghasilkan file GPS.asp sehingga kelas umum untuk mendapatkan ukuran gambar tanpa komponen OK.
2. Dapatkan jalur gambar
Karena ada lebih dari satu gambar dan gambar perlu disimpan dalam kategori, kami merancang bidang ImgURL dalam database untuk menyimpan jalur relatif gambar tersebut. Semua gambar yang diunggah kami masukkan ke dalam folder bernama gambar (saya tidak akan menjelaskan secara detail cara mengunggah gambar tanpa komponen). Sekarang pertama-tama kita mendesain halaman ShowImg.asp untuk menampilkan thumbnail dan informasi terkait. Desain spesifiknya adalah sebagai berikut:
gambar:
Format gambar:
Ukuran gambar:
Ukuran gambar:
Jumlah klik:
Selanjutnya, kita mendapatkan jalur absolut dari gambar tersebut. Kodenya adalah sebagai berikut:
<%
'/////Dapatkan jalur absolut ShowImg.asp/////
Redupkan file cur
curFile=Server.mappath(Permintaan.variabel server(PATH_INFO))
Redupkan nama file, nama file
'/////Jalur relatif ke gambar (disimpan dalam database)
cufilename=rs(ImgURL)
'/////Karena ShowImg.asp berada di direktori yang sama dengan gambar, kami menggunakan instrrev untuk mendapatkan jalur gambar/////
nama file=kiri(curFile,instrrev(curFile,/))&cufilename
'/////Membuat entitas kelas GPS/////
Redupkan GetPicSize
Setel GetPicSize=GPS baru
Setel fs=Server.CreateObject(Scripting.FileSystemObject)
'/////Dapatkan jenis gambarnya/////
Redupkan PicSuffixName
PicSuffixName=fs.GetExtensionName(nama file)
Redupkan PD '//Dimensi Gambar
Redupkan P Lebar, P Tinggi
Pilih Kasus 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
Pilihan Akhir
Tetapkan fs=Tidak ada
Setel GetPicSize=Tidak Ada
%>
Copy kode diatas ke bagian atas <body> dan beres!
Tentu saja, beberapa orang akan mengatakan bahwa Anda tidak harus menggunakan PATH_INFO untuk mendapatkan jalurnya. Anda cukup menggunakan server.mappath() secara langsung. Haha, setiap orang memiliki preferensinya masing-masing menyadari beberapa fungsi FSO dan menggunakan server .mappath() tidak berfungsi, jadi saya terus menggunakan ini.
3. Tentukan ukuran thumbnail
Bagian dari kode ini tergantung pada yang melihatnya, dan orang bijak melihat kebijaksanaan. Pertama, kita perlu menentukan rentang ukuran tampilan thumbnail, misalnya: 300X260. Kodenya dapat ditulis seperti ini:
<%
Redupkan PXLebar,PXTinggi
Redupkan Pp '//Proporsi
Jika PLebar=0 Atau PLebar= Maka
Lebar PX=0
PXTinggi=0
Kalau tidak
Pp=FormatNumber(PWidth/PHeight,2) '//Rasio aspek
Akhiri Jika
Jika PWidth>=PHeight Maka
Jika PLebar>=300 Maka
Lebar PX=300
PXHeight=Nomor Format(300/Pp,0)
Kalau tidak
Lebar PX=Lebar P
PXTinggi=PHTinggi
Akhiri Jika
Kalau tidak
Jika PHeight>=260 Maka
PXTinggi=260
PXLebar=Nomor Format(260*Pp,0)
Kalau tidak
Lebar PX=Lebar P
PXTinggi=PHTinggi
Akhiri Jika
Akhiri Jika
%>
Tulis saja kode di atas segera setelah langkah kedua. Kode saat menelepon adalah sebagai berikut:
<img src=<%=curfilename%> batas=0 lebar=<%=PXWidth%>
tinggi=<%=PXTinggi%>>
Sedangkan untuk format gambarnya bisa menggunakan <%=PicSuffixName%> untuk mendapatkannya, dan ukuran gambarnya bisa dituliskan sebagai
<%
respon.tulis PXLebar&X&PXTinggi
%>
Ukuran gambar dapat direalisasikan menggunakan FSO.GetFileSize(nama file), dan jumlah klik dapat direalisasikan secara sederhana menggunakan pernyataan SQL. Pengkodean spesifik tidak akan dijelaskan lagi.
Dengan cara ini, program pembuatan thumbnail tanpa komponen telah ditulis. Ini mungkin sedikit dipinjam, tetapi selama semua orang bisa menguasai metode ini, saya yakin ini akan meningkat pesat.