ASP memerlukan komponen untuk menambahkan tanda air ke gambar. Perangkat lunak yang umum digunakan termasuk perangkat lunak aspjpeg dan perangkat lunak wsImage yang dikembangkan oleh Cina. Anda dapat mencari dan mengunduh kedua perangkat lunak ini secara online Versi Cina dan mudah dioperasikan A SP memerlukan komponen untuk menambahkan tanda air ke gambar... Perangkat lunak yang umum digunakan antara lain perangkat lunak aspjpeg dan perangkat lunak wsImage yang dikembangkan oleh orang Cina. Anda dapat mencari dan mengunduh kedua perangkat lunak ini secara online adalah versi Cina. Mudah dioperasikan.
Cara mendaftarkan komponen :
Cukup masukkan regsvr32 [Dll path] pada command prompt.
Menambahkan tanda air ke gambar tidak lebih dari mendapatkan ukuran gambar dan kemudian menulis tanda air di atasnya. Kode ASP hanya berfungsi sebagai komponen kontrol.
1: Dapatkan ukuran gambar (di sini dinyatakan dalam nilai piksel. Teman yang belajar PhotoShop harus mengerti)
Copy kode kodenya sebagai berikut:
<%
set obj=server.CreateObject(wsImage.Resize) ''Komponen panggilan
obj.LoadSoucePic server.mappath(25.jpg) ''Buka gambarnya, nama gambarnya adalah 25.jpg
obj.GetSourceInfo iWidth,iHeight
respon.tulis lebar gambar: & iWidth & <br> ''Dapatkan lebar gambar
respon.tulis tinggi gambar: & iHeight & <br> ''Dapatkan tinggi gambar
strError=obj.errorinfo
jika strError<> maka
respon.tulis obj.errorinfo
berakhir jika
obj.free
atur objek=tidak ada
%>
''------------------------------------------------ ----------------''
2: Tambahkan tanda air teks
Copy kode kodenya sebagai berikut:
<%
setel obj=server.CreateObject(wsImage.Ubah Ukuran)
obj.LoadSoucePic server.mappath(25.jpg) ''Muat gambar
obj.Kualitas=75
obj.TxtMarkFont = Chinese Caiyun''Setel font teks tanda air
obj.TxtMarkBond = false ''Mengatur ketebalan teks watermark
obj.MarkRotate = 0 ''Sudut rotasi teks watermark
obj.TxtMarkHeight = 25 ''Tinggi teks tanda air
obj.AddTxtMark server.mappath(txtMark.jpg), membawa Anda ke luar negeri, &H00FF00&, 10, 70
strError=obj.errorinfo ''Buat nama gambar, warna teks posisi watermark pada gambar
jika strError<> maka
respon.tulis obj.errorinfo
berakhir jika
obj.free
atur objek=tidak ada
%>
''------------------------------------------------ ----------------''
Tiga: Tambahkan tanda air gambar
Copy kode kodenya sebagai berikut:
<%
setel obj=server.CreateObject(wsImage.Ubah Ukuran)
obj.LoadSoucePic server.mappath(25.jpg) ''Muat gambar
obj.LoadImgMarkPic server.mappath(blend.bmp) ''Muat gambar tanda air
obj.Kualitas=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220,&hFFFFFF, 70
strError=obj.errorinfo ''Buat nama gambar, warna teks posisi watermark pada gambar
jika strError<> maka
respon.tulis obj.errorinfo
berakhir jika
obj.free
atur objek=tidak ada
%>
''------------------------------------------------ ----------------''
Sebenarnya, menambahkan tanda air ke gambar sesederhana itu. Lalu saya akan membahas dua kegunaan utama komponen WsImage.dll, yaitu:
Pangkas gambar dan hasilkan thumbnail gambar.
Saya masih terbiasa menggunakan kode dan menambahkan komentar:
Pangkas gambar:
Copy kode kodenya sebagai berikut:
<%
setel obj=server.CreateObject(wsImage.Ubah Ukuran)
obj.LoadSoucePic server.mappath(25.jpg)
obj.Kualitas=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''Tentukan ukuran pemotongan dan buat nama gambar
strError=obj.errorinfo
jika strError<> maka
respon.tulis obj.errorinfo
berakhir jika
obj.free
atur objek=tidak ada
%>
Catatan terperinci: Metode CropImage dari WsImage digunakan untuk memotong gambar. Ditetapkan bahwa saat membuat gambar, 100 dan 10 adalah titik pemotongan di sudut kiri atas, yaitu 100 piksel dari sisi kiri gambar dan 100 piksel dari sisi kiri gambar. 10 piksel dari atas. Dua 200 piksel terakhir mewakili pemotongan broadband dan tinggi.
''------------------------------------------------ ----------------''
Hasilkan thumbnail gambar :
Copy kode kodenya sebagai berikut:
<%
setel obj=server.CreateObject(wsImage.Ubah Ukuran)
obj.LoadSoucePic server.mappath(25.jpg) ''Muat gambar
obj.Kualitas=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''Tentukan nama thumbnail yang ukurannya
strError=obj.errorinfo
jika strError<> maka
respon.tulis obj.errorinfo
berakhir jika
obj.free
atur objek=tidak ada
%>
Deskripsi rinci:
Ada empat metode ekspor untuk menghasilkan thumbnail :
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200 adalah lebar keluaran dan 150 adalah tinggi keluaran. Bentuk keluaran ini memaksa lebar dan tinggi keluaran, yang dapat menyebabkan deformasi gambar.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
Mengambil 200 sebagai lebar keluaran, tinggi keluaran akan disesuaikan dengan kolom.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
Mengambil 200 sebagai tinggi keluaran, lebar keluaran akan disesuaikan dengan kolom.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
Angka 0,5 pertama berarti thumbnail yang dihasilkan berukuran setengah dari lebar gambar asli, yang berarti lebarnya dikurangi.
Angka 0,5 kedua berarti thumbnail yang dihasilkan berukuran setengah dari gambar asli, yang berarti rasio reduksi tinggi.
Rasio pengurangan lebar dan tinggi yang sama berarti gambar asli akan diperkecil. Jika rasio skala lebar dan tinggi lebih besar dari 1, gambar asli akan diperbesar.
2---------------------------------------------------------------- -----------------------------------------------
Copy kode kodenya sebagai berikut:
<%
Redupkan stream1,stream2,istart,iend,nama file
mulai=1
vbEnter=Chr(13)&Chr(10)
fungsi getvalue(fstr,foro,paths)'fstr adalah nama yang diterima, foro Boolean false adalah unggahan file, true adalah bidang normal, jalur adalah jalur penyimpanan file unggahan
jika sebelumnya maka
dapatkan nilai=
istart=instring(istart,fstr)
istart=istart+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
jika istart>5+len(fstr) maka
getvalue=substring(istart,iend-istart)
kalau tidak
dapatkan nilai=
berakhir jika
kalau tidak
istart=instring(istart,fstr)
istart=istart+len(fstr)+13
iend=instring(istart,vbenter)-1
nama file=substring(istart,iend-istart)
filename9=right(getfilename(filename),4)'Dapatkan akhiran file asli
nama file8=tahun(sekarang())&bulan(sekarang())&hari(sekarang())&jam(sekarang())&menit(sekarang())&detik(sekarang())&int(9*10^3*rnd)+10 ^3'Dapatkan nama file acak,
'Jika ingin memanjangkan nama file, silakan ubah nilai 100 di (100*rnd)
filename=replace(getfilename(filename),getfilename(filename),filename8) 'Ganti nama file asli dan gunakan fungsi replace
filename=filename&filename9 'Tambahkan akhiran file, aturannya adalah menambahkan akhiran file asli ke nama file acak yang dihasilkan
istart=instring(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
filemulai=mulai
ukuran file=iend-istart-1
objstream.position=filestart
Setel sf = Server.CreateObject(ADODB.Stream)
sf.Mode=3
sf.Jenis=1
sf.Buka
objstream.copy ke sf,Ukuran File
jika nama file<> maka
Setel rf = Server.CreateObject(Scripting.FileSystemObject)
saya=0
fn=nama file
sementara rf.FileExists(server.mappath(paths+fn))
fn=cstr(i)+nama file
saya=saya+1
pergi ke
nama file=fn
sf.SaveToFile server.mappath(jalur+nama file),2
''''''''''''''''''''''''''''''''''''
Redupkan JPEG
Setel Jpeg = Server.CreateObject(Persits.Jpeg)
Jika -2147221005=Err maka
Response.write Tidak ada komponen seperti itu, silakan instal! 'Periksa apakah komponen AspJpeg sudah diinstal
Respon.Akhir()
Akhiri Jika
Jpeg.Open (server.mappath(paths+nama file)) 'Buka gambarnya
Jika err.number maka
Response.write gagal membuka gambar, harap periksa jalurnya!
Respon.Akhir()
Berakhir jika
Redupkan aa
aa=Jpeg.Binary 'Tetapkan data asli ke aa
'==========Tambahkan tanda air teks===
Jpeg.Canvas.Font.Color = &Hff0000 'Warna teks tanda air
Jpeg.Canvas.Font.Family = font Arial
Jpeg.Canvas.Font.Bold = True 'Apakah akan dicetak tebal
Jpeg.Canvas.Font.Size = ukuran font 30'
Jpeg.Canvas.Font.ShadowColor = &H000000 'Warna bayangan
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Benar
Jpeg.Canvas.Font.Quality = 4 'Kualitas keluaran
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com 'Posisi dan teks tanda air
bb=Jpeg.Binary 'Tetapkan nilai setelah pemrosesan tanda air teks ke bb
'============Sesuaikan transparansi teks=
Setel MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Set Logo = Server.CreateObject(Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0,2 '0,3 adalah transparansi
cc=MyJpeg.Binary 'Tetapkan hasil akhir ke cc. Pada saat ini, gambar target juga dapat dibuat.
respon.BinaryWrite cc 'Output biner ke browser
MyJpeg.Save (server.mappath(jalur+nama file))
atur aa=tidak ada
setbb=tidak ada
setcc=tidak ada
JPEG.tutup
MyJpeg.Tutup
Logo.Tutup
''''''''''''''''''''''''''''''''''''''' '''
berakhir jika
getvalue=nama file
berakhir jika
fungsi akhir
Fungsi subString(Awal,Len)
dimi,c,batang
objStream.Position=Mulai-1
batang=
untuk i=1 ke Len
jika objStream.EOS lalu Keluar untuk
c=ascB(objStream.Baca(1))
Jika c > 127 Maka
jika objStream.EOS lalu Keluar untuk
stemp=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
saya=saya+1
kalau tidak
stemp=stempel&Chr(c)
Akhiri Jika
Berikutnya
subString=cap
Fungsi akhir
Fungsi inString(Awal,varStr)
redupkan i,j,bt,theLen,str
DalamString=0
Str=keByte(varStr)
theLen=LenB(Str)
untuk i=mulai ke objStream.Size-theLen
jika i>objstream.size lalu keluar dari Fungsi
objstream.Posisi=i-1
jika AscB(objstream.Read(1))=AscB(midB(Str,1)) maka
DalamString=i
untuk j=2 ke Len
jika objstream.EOS maka
dalamString=0
Keluar untuk
berakhir jika
jika AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) maka
DalamString=0
Keluar Untuk
berakhir jika
Berikutnya
jika InString<>0 lalu Keluar dari Fungsi
berakhir jika
Berikutnya
Fungsi Akhir
Fungsi pribadi GetFileName(FullPath)
Jika FullPath <> Lalu
GetFileName = pertengahan(FullPath,InStrRev(FullPath, /)+1)
Kalau tidak
Dapatkan Nama File =
Akhiri Jika
Fungsi akhir
fungsi toByte(Str)
redupkan i,iCode,c,iLow,iHigh
keByte=
Untuk i=1 Ke Len(Str)
c=tengah(Str,i,1)
kode = Asc(c)
Jika iCode<0 Maka iCode = iCode + 65535
Jika iCode>255 Lalu
iRendah = Kiri(Hex(Asc(c)),2)
iTinggi =Kanan(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iLow) & chrB(&H&iTinggi)
Kalau tidak
toByte = toByte & chrB(AscB(c))
Akhiri Jika
Berikutnya
Fungsi akhir
%>
3---------------------------------------------------------------- -----------------------------------------------
Gunakan komponen asp Persits.Jpeg untuk menambahkan tanda air ke gambar dan menghasilkan thumbnail
Copy kode kodenya sebagai berikut:
<%
Nama File=1.jpg
Setel Jpeg = Server.CreateObject(Persits.Jpeg)
' Dapatkan jalur gambar sumber
Jalur = Server.MapPath(Nama File)
'Buka gambar sumber
'respons.write(Jalur)
Jpeg.Jalur Terbuka
'Setel detail pembuatan gambar mini. Ada banyak metode pengaturan. Cara berikut ini adalah menentukan rasio aspek terlebih dahulu, lalu menskalakannya secara proporsional.
Jika Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1 maka
Jpeg.Lebar = 98
Jpeg.Tinggi = int((98/Jpeg.Lebar Asli)*Jpeg.Tinggi Asli)
elseif Jpeg.OriginalWidth / Jpeg.OriginalHeight < 1 lalu
Jpeg.Lebar = 98
Jpeg.Tinggi= int((98/Jpeg.Lebar Asli)*Jpeg.Tinggi)
berakhir jika
'Atur efek penajaman
Jpeg.Pertajam 1, 130
' Hasilkan thumbnail ke jalur yang ditentukan
Respons.Tulis Server.MapPath(.)
Jpeg.Simpan Server.MapPath(.)&/small/&nama file
'response.tulis nama file1
'response.write Server.MapPath(uploadpic/kecil)&/&namafile1
' Perhatikan dua Sesi ini
'Sesi(PPP0)=GP_curPath&NamaFile
'Sesi(PPP1)=GP_curPath&kecil&NamaFile
Tetapkan Jpeg = Tidak Ada
'Secara otomatis menghasilkan gambar mini dan berakhir
'Mulailah memberi tanda air pada gambar besar
'Buat sebuah contoh
Setel Jpeg = Server.CreateObject(Persits.Jpeg)
'Buka gambar target
Jalur = Server.MapPath(Nama File)
'Buka gambar sumber
Jpeg.Jalur Terbuka
'Tambahkan tanda air teks
Jpeg.Canvas.Font.Color = &HFF0000' Merah
Jpeg.Canvas.Font.Family = Dinasti Song
Jpeg.Canvas.Font.Bold = Benar
Jpeg.Canvas.Print 10, 10, Teknologi Honglan
'Simpan berkas
Jpeg.Simpan Server.MapPath(.)&/small/w_&nama file
'Batalkan pendaftaran objek
Tetapkan Jpeg = Tidak Ada
'Tanda air gambar besar berakhir
%>
4------------------------------------------------- -----------------------------------------------
Gunakan ASPJPEG untuk membuat kode implementasi ASP yang diberi watermark
Copy kode kodenya sebagai berikut:
<%
Kelas qswhImg
redup juga
Sub Kelas Pribadi_Inisialisasi
atur 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(badut)<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))
berakhir jika
Berikutnya
Bin2Str = Str
Fungsi Akhir
Fungsi Pribadi Num2Str(angka,basis,lensa)
'Qishuiwuhen (2002-8-12)
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)
'Qishuiwuhen (2002-8-12)
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)
'Qishuiwuhen (2002-8-12)
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)
'Qishuiwuhen (2002-8-12)
redup ret
kembali = 0
untuk i = 1 hingga lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
Berikutnya
BinVal2=ret
Fungsi Akhir
Fungsi getImageSize(filespec)
'Qishuiwuhen (2002-9-3)
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= & ret(2) &
getimagesize=ret
Fungsi Akhir
Kelas Akhir
SavefullPath=326151745wldn.jpg 'Penugasan jalur gambar atau penetapan variabel jalur gambar
'Dapatkan lebar gambar
Tetapkan qswh = qswhImg baru
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
Tetapkan qswh = Tidak ada
str_ImgLebar=arr(1)
str_ImgTinggi=arr(2)
Jika Int(str_ImgWidth) > 600 Lalu
str_ImgLebar = 600
Kalau tidak
str_ImgWidth = str_ImgWidth
Akhiri Jika
'Tambahkan tanda air
Jika Int(str_ImgWidth) > 300 Dan Int(str_ImgHeight) > 100 Maka
LocalFile=Server.MapPath(SimpanPath Penuh)
TargetFile=Server.MapPath(SimpanPath Penuh)
Redupkan JPEG
Setel Jpeg = Server.CreateObject(Persits.Jpeg)
Jika -2147221005=Err maka
Response.Write(<script Language='javascript'>alert('Komponen ini tidak ada, silakan instal!'); history.back();</script>) 'Periksa apakah komponen AspJpeg sudah diinstal
Respon.Akhir()
Akhiri Jika
Jpeg.Open (LocalFile) 'Buka gambarnya
Jika err.number maka
Response.Write(<script bahasa='javascript'>alert('Gagal membuka gambar, harap periksa jalurnya!'); history.back();</script>)
Respon.Akhir()
Berakhir jika
Redupkan aa
aa=Jpeg.Binary 'Tetapkan data asli ke aa
'==========Tambahkan tanda air teks===
Jpeg.Canvas.Font.Color = &Hfffffff 'Warna teks tanda air
Jpeg.Canvas.Font.Family = Arial 'Font
Jpeg.Canvas.Font.Bold = True 'Apakah akan dicetak tebal
Jpeg.Canvas.Font.Size = 20' Ukuran font
Jpeg.Canvas.Font.ShadowColor = &H000000 'Warna bayangan
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Benar
Jpeg.Canvas.Font.Quality = 10' 'Kualitas keluaran
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40,Jpeg.OriginalHeight/2-10, posisi tanda air dan teks konstruksi situs web
bb=Jpeg.Binary 'Tetapkan nilai setelah pemrosesan tanda air teks ke bb
'============Sesuaikan transparansi teks=
Setel MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Set Logo = Server.CreateObject(Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0,5 '0,3 adalah transparansi
cc=MyJpeg.Binary 'Tetapkan hasil akhir ke cc. Pada saat ini, gambar target juga dapat dibuat.
Response.BinaryWrite cc 'Output biner ke browser
MyJpeg.Simpan (TargetFile)
atur aa = tidak ada
setbb=tidak ada
setcc=tidak ada
JPEG.Tutup
MyJpeg.Tutup
Logo.Tutup
Akhiri Jika
'Tambahkan tanda air
%>