ASP nécessite des composants pour ajouter des filigranes aux images. Les logiciels couramment utilisés incluent le logiciel aspjpeg et le logiciel wsImage développé par les Chinois. Vous pouvez rechercher et télécharger ces deux logiciels en ligne. Il est recommandé d'utiliser wsImage développé par les Chinois. Version chinoise et facile à utiliser. SP nécessite des composants pour ajouter des filigranes aux images... Les logiciels couramment utilisés incluent le logiciel aspjpeg et le logiciel wsImage développés par les Chinois. Vous pouvez rechercher et télécharger ces deux logiciels en ligne. Il est recommandé d'utiliser wsImage développé par les Chinois. est la version chinoise. Facile à utiliser.
Comment enregistrer un composant :
Entrez simplement regsvr32 [Chemin Dll] à l’invite de commande.
Ajouter un filigrane à une image n'est rien de plus que d'obtenir la taille de l'image puis d'écrire le filigrane dessus. Le code ASP sert uniquement de composant de contrôle. Utilisons le code pour tout expliquer.
1 : Obtenez la taille de l'image (ici exprimée en valeurs de pixels. Les amis qui apprennent PhotoShop devraient comprendre)
Copiez le code comme suit :
<%
set obj=server.CreateObject(wsImage.Resize) ''Appeler le composant
obj.LoadSoucePic server.mappath(25.jpg) ''Ouvrez l'image, le nom de l'image est 25.jpg
obj.GetSourceInfo iLargeur, iHauteur
réponse.write largeur de l'image : & iWidth & <br> ''Obtenir la largeur de l'image
réponse.write hauteur de l'image : & iHeight & <br> ''Obtenir la hauteur de l'image
strError=obj.errorinfo
si strErreur<> alors
réponse.write obj.errorinfo
finir si
obj.gratuit
définir obj = rien
%>
''------------------------------------------------ ----------------''
2 : Ajouter un filigrane de texte
Copiez le code comme suit :
<%
set obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Charger les images
obj.Qualité=75
obj.TxtMarkFont = Chinese Caiyun''Définir la police du texte du filigrane
obj.TxtMarkBond = false ''Définir l'épaisseur du texte du filigrane
obj.MarkRotate = 0 ''Angle de rotation du texte du filigrane
obj.TxtMarkHeight = 25''Hauteur du texte en filigrane
obj.AddTxtMark server.mappath(txtMark.jpg), vous emmène hors du pays, &H00FF00&, 10, 70
strError=obj.errorinfo ''Génère le nom de l'image, la couleur du texte est la position du filigrane dans l'image
si strErreur<> alors
réponse.write obj.errorinfo
finir si
obj.gratuit
définir obj = rien
%>
''------------------------------------------------ ----------------''
Troisième : ajouter un filigrane d'image
Copiez le code comme suit :
<%
set obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Charger les images
obj.LoadImgMarkPic server.mappath(blend.bmp) ''Charger l'image en filigrane
obj.Qualité=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220,&hFFFFFF, 70
strError=obj.errorinfo ''Génère le nom de l'image, la couleur du texte est la position du filigrane dans l'image
si strErreur<> alors
réponse.write obj.errorinfo
finir si
obj.gratuit
définir obj = rien
%>
''------------------------------------------------ ----------------''
En fait, ajouter des filigranes aux images est aussi simple que cela. Ensuite, je parlerai des deux autres utilisations principales du composant WsImage.dll.
Recadrez les images et générez des vignettes d'images.
Je suis toujours habitué à utiliser du code et à ajouter des commentaires :
Recadrer l'image :
Copiez le code comme suit :
<%
set obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic serveur.mappath(25.jpg)
obj.Qualité=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''Définir la taille du recadrage et générer le nom de l'image
strError=obj.errorinfo
si strErreur<> alors
réponse.write obj.errorinfo
finir si
obj.gratuit
définir obj = rien
%>
Note détaillée : La méthode CropImage de WsImage est utilisée pour recadrer l'image. Il est défini que lors de la génération de l'image, 100 et 10 sont les points de recadrage dans le coin supérieur gauche, soit 100 pixels du côté gauche de l'image et. 10 pixels du haut. Les deux derniers 200 représentent le recadrage du haut débit et de la hauteur.
''------------------------------------------------ ----------------''
Générer des vignettes d'images :
Copiez le code comme suit :
<%
set obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Charger les images
obj.Qualité=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''Définissez le nom de la vignette, qui est la taille
strError=obj.errorinfo
si strErreur<> alors
réponse.write obj.errorinfo
finir si
obj.gratuit
définir obj = rien
%>
Descriptif détaillé :
Il existe quatre méthodes d'export pour générer des vignettes :
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200 est la largeur de sortie et 150 est la hauteur de sortie. Ce formulaire de sortie force la largeur et la hauteur de sortie, ce qui peut provoquer une déformation de l'image.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
En prenant 200 comme largeur de sortie, la hauteur de sortie évoluera avec la colonne.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
En prenant 200 comme hauteur de sortie, la largeur de sortie évoluera avec la colonne.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
Le premier 0,5 signifie que la vignette générée fait la moitié de la largeur de l'image originale, ce qui signifie que la largeur est réduite.
Le deuxième 0,5 signifie que la vignette générée fait la moitié de la hauteur de l'image originale, ce qui signifie un taux de réduction élevé.
Le même rapport de réduction de largeur et de hauteur signifie que l'image originale sera réduite. Si le rapport de mise à l'échelle de la largeur et de la hauteur est supérieur à 1, l'image originale sera agrandie.
2------------------------------------------------- -----------------------------------------------
Copiez le code comme suit :
<%
Dim stream1, stream2, isstart, iend, nom de fichier
jedémarre=1
vbEntrée=Chr(13)&Chr(10)
function getvalue(fstr,foro,paths)'fstr est le nom reçu, foro Boolean false est le téléchargement de fichier, true est un champ normal, path est le chemin de stockage du fichier de téléchargement
si c'est le cas alors
obtenirvaleur=
isstart=instring(istart,fstr)
istart=istart+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
si isstart>5+len(fstr) alors
getvalue=sous-chaîne(istart,iend-istart)
autre
obtenirvaleur=
finir si
autre
isstart=instring(istart,fstr)
istart=istart+len(fstr)+13
iend=instring(istart,vbenter)-1
nom de fichier = sous-chaîne (istart, iend-istart)
filename9=right(getfilename(filename),4)'Obtenir le suffixe du fichier d'origine
filename8=année(maintenant())&mois(maintenant())&jour(maintenant())&heure(maintenant())&minute(maintenant())&seconde(maintenant())&int(9*10^3*rnd)+10 ^3'Obtenez un nom de fichier aléatoire,
'Si vous souhaitez allonger le nom du fichier, veuillez modifier la valeur de 100 po (100*rnd)
filename=replace(getfilename(filename),getfilename(filename),filename8) 'Remplacez le nom du fichier d'origine et utilisez la fonction de remplacement
filename=filename&filename9 'Ajouter un suffixe de fichier, la règle est d'ajouter le suffixe de fichier d'origine au nom de fichier aléatoire généré
istart=instring(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
fichierstart=istart
taille du fichier = iend-istart-1
objstream.position=filestart
Définir sf = Server.CreateObject (ADODB.Stream)
sf.Mode=3
sf.Type=1
sf.Open
objstream.copyto sf, Taille du fichier
si nom de fichier<> alors
Définir rf = Server.CreateObject (Scripting.FileSystemObject)
je = 0
fn=nom du fichier
tandis que rf.FileExists(server.mappath(paths+fn))
fn=cstr(i)+nom de fichier
je=i+1
wend
nom de fichier = fn
sf.SaveToFile server.mappath(chemins+nom de fichier),2
''''''''''''''''''''''''''''''''''''''''
DimJpeg
Définir Jpeg = Server.CreateObject (Persits.Jpeg)
Si -2147221005=Err alors
Response.write Il n'existe pas de composant de ce type, veuillez l'installer ! « Vérifiez si le composant AspJpeg est installé !
Réponse.Fin()
Fin si
Jpeg.Open (server.mappath(paths+filename)) 'Ouvrir l'image
Si numéro d'erreur alors
Response.write n'a pas réussi à ouvrir l'image, veuillez vérifier le chemin !
Réponse.Fin()
Terminer si
Faible aa
aa=Jpeg.Binary 'Attribuer les données originales à aa
'==========Ajouter un filigrane de texte==================
Jpeg.Canvas.Font.Color = &Hff0000 'Couleur du texte du filigrane
Jpeg.Canvas.Font.Family = Police Arial
Jpeg.Canvas.Font.Bold = True 'En gras
Jpeg.Canvas.Font.Size = taille de police de 30'
Jpeg.Canvas.Font.ShadowColor = &H000000 'Couleur de l'ombre
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Vrai
Jpeg.Canvas.Font.Quality = 4 'Qualité de sortie
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com 'Position et texte du filigrane
bb=Jpeg.Binary 'Attribuez la valeur à bb après le traitement du filigrane de texte. À ce stade, le filigrane de texte n'a pas d'opacité.
'============Ajuster la transparence du texte================
Définir MyJpeg = Server.CreateObject (Persits.Jpeg)
MyJpeg.OpenBinary aa
Définir le logo = Server.CreateObject (Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0.2 '0.3 est la transparence
cc=MyJpeg.Binary 'Attribuez le résultat final à cc À ce stade, l'image cible peut également être générée.
réponse.BinaryWrite cc 'Sortie binaire vers le navigateur
MyJpeg.Save (server.mappath(chemins+nom de fichier))
définir aa = rien
setbb=rien
setcc = rien
Jpeg.fermer
MonJpeg.Fermer
Logo.Fermer
'''''''''''''''''''''''''''''''''''''' '''
finir si
getvalue = nom de fichier
finir si
fonction de fin
Fonction sous-chaîne (theStart, theLen)
dimi, c, temp
objStream.Position=theStart-1
temp=
pour i=1 à laLen
si objStream.EOS alors quittez pour
c=ascB(objStream.Read(1))
Si c > 127 Alors
si objStream.EOS alors quittez pour
stemp=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
je=i+1
autre
temp=stemp&Chr(c)
Fin si
Suivant
sous-Chaîne=stemp
Fin de fonction
Fonction inString(theStart,varStr)
dim je, j, bt, theLen, str
ChaîneIn=0
Str=toByte(varStr)
leLen=LenB(Str)
pour i=theStart à objStream.Size-theLen
si i> objstream.size alors quittez la fonction
objstream.Position=i-1
si AscB(objstream.Read(1))=AscB(midB(Str,1)) alors
InString=i
pour j=2 à laLen
si objstream.EOS alors
inString=0
Sortie pour
finir si
si AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) alors
ChaîneIn=0
Quitter pour
finir si
suivant
si InString<>0 alors fonction de sortie
finir si
suivant
Fonction de fin
Fonction privée GetFileName (FullPath)
Si Chemin Complet <> Alors
GetFileName = milieu (FullPath, InStrRev (FullPath, /)+1)
Autre
GetFileName =
Fin si
Fin de fonction
fonction toByte(Str)
faible je,iCode,c,iLow,iHigh
toByte=
Pour i=1 À Len(Str)
c=milieu(Str,i,1)
iCode =Asc(c)
Si iCode<0 Alors iCode = iCode + 65535
Si iCode>255 Alors
iBas = Gauche (Hex (Asc (c)), 2)
iHaut =Droite(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iLow) & chrB(&H&iHigh)
Autre
toByte = toByte & chrB(AscB(c))
Fin si
Suivant
Fin de fonction
%>
3------------------------------------------------- -----------------------------------------------
Utilisez le composant asp Persits.Jpeg pour ajouter un filigrane aux images et générer des vignettes
Copiez le code comme suit :
<%
Nom du fichier = 1.jpg
Définir Jpeg = Server.CreateObject (Persits.Jpeg)
' Récupère le chemin de l'image source
Chemin = Server.MapPath (FileName)
'Ouvrir l'image source
'response.write(Chemin)
Jpeg.Chemin ouvert
'Définissez les détails de la génération des vignettes. Il existe de nombreuses méthodes de configuration. La méthode suivante consiste à déterminer d'abord le rapport hauteur/largeur, puis à le mettre à l'échelle proportionnellement.
Si Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1 alors
Jpeg.Largeur = 98
Jpeg.Hauteur = int((98/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
sinon si Jpeg.OriginalWidth / Jpeg.OriginalHeight < 1 alors
Jpeg.Largeur = 98
Jpeg.Hauteur= int((98/Jpeg.OriginalWidth)*Jpeg.Hauteur)
finir si
'Définir l'effet de netteté
Jpeg.Aiguiser 1, 130
' Générer des vignettes vers le chemin spécifié
Réponse.Write Server.MapPath(.)
Jpeg.Save Server.MapPath(.)&/small/&filename
'response.write nom de fichier1
'response.write Server.MapPath(uploadpic/small)&/&filename1
' Faites attention à ces deux sessions
'Session(PPP0)=GP_curPath&FileName
'Session(PPP1)=GP_curPath&small&FileName
Définir Jpeg = Rien
'Générer automatiquement une image miniature et terminer
'Commencer à filigraner de grandes images
'Créer une instance
Définir Jpeg = Server.CreateObject (Persits.Jpeg)
'Ouvrez l'image cible
Chemin = Server.MapPath (FileName)
'Ouvrir l'image source
Jpeg.Chemin ouvert
'Ajouter un filigrane de texte
Jpeg.Canvas.Font.Color = &HFF0000' Rouge
Jpeg.Canvas.Font.Family = Dynastie Song
Jpeg.Canvas.Font.Bold = Vrai
Jpeg.Canvas.Print 10, 10, Technologie Honglan
'Enregistrer le fichier
Jpeg.Save Server.MapPath(.)&/small/w_&filename
'Désenregistrer l'objet
Définir Jpeg = Rien
'Le filigrane des grandes images se termine
%>
4------------------------------------------------- -----------------------------------------------
Utilisez ASPJPEG pour créer un code d'implémentation ASP filigrané
Copiez le code comme suit :
<%
Classe qswhImg
faible aussi
Sous-classe privée_Initialize
définir aso=CreateObject(Adodb.Stream)
aso.Mode=3
aso.Type=1
aso.Ouvrir
Fin du sous-marin
Sous-classe privée_Terminate
définir aso = rien
Fin du sous-marin
Fonction privée Bin2Str(Bin)
Dim I, Str
Pour I=1 à LenB(Bin)
clow=MidB(Bin,I,1)
si ASCB(clow)<128 alors
Str = Str & Chr(ASCB(clow))
autre
Je=Je+1
si I <= LenB(Bin) alors Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
finir si
Suivant
Bin2Str = Chaîne
Fonction de fin
Fonction privée Num2Str(num,base,lens)
'qiushuiwuhen (2002-8-12)
faible ret
ret =
pendant que(num>=base)
ret = (numéro de base du mod) & ret
num = (num - num base du mod)/base
wend
Num2Str = droite (string (lens,0) & num & ret, lens)
Fonction de fin
Fonction privée Str2Num(str,base)
'qiushuiwuhen (2002-8-12)
faible ret
ret = 0
pour i=1 à len(str)
ret = ret *base + cint(mid(str,i,1))
suivant
NuméroStr2=ret
Fonction de fin
Fonction privée BinVal(bin)
'qiushuiwuhen (2002-8-12)
faible ret
ret = 0
pour i = lenb(bin) à 1 pas -1
ret = ret *256 + ascb(midb(bin,i,1))
suivant
BinVal=ret
Fonction de fin
Fonction privée BinVal2(bin)
'qiushuiwuhen (2002-8-12)
faible ret
ret = 0
pour i = 1 à lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
suivant
BinVal2=ret
Fonction de fin
Fonction getImageSize (filespec)
'qiushuiwuhen (2002-9-3)
faible ret(3)
aso.LoadFromFile(filespec)
bFlag=aso.read(3)
sélectionner le cas hex(binVal(bFlag))
cas 4E5089 :
aso.lire(15)
ret(0)=PNG
ret(1)=BinVal2(aso.read(2))
aso.read(2)
ret(2)=BinVal2(aso.read(2))
cas 464947 :
aso.read(3)
ret(0)=GIF
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
cas 535746 :
aso.read(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(gauche(sConv,5),2)
sConv=milieu(sConv,6)
tandis que(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2,8)
wend
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)
cas FFD8FF :
faire
faire : p1=binVal(aso.Read(1)) : boucle while p1=255 et non aso.EOS
si p1>191 et p1<196 alors quittez, faites autrement aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):boucle while p1<255 et non aso.EOS
boucle tant que vrai
aso.Read(3)
ret(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
cas sinon :
si gauche(Bin2Str(bFlag),2)=BM alors
aso.Lire(15)
ret(0)=BMP
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
autre
ret(0)=
finir si
fin de la sélection
ret(3)=largeur= & ret(1) & hauteur= & ret(2) &
getimagesize=ret
Fonction de fin
Fin du cours
SavefullPath=326151745wldn.jpg 'Affectation du chemin d'image ou affectation de variable de chemin d'image
'Obtenir la largeur de l'image
Définir qswh = nouveau qswhImg
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
Définir qswh = Rien
str_ImgWidth=arr(1)
str_ImgHeight=arr(2)
Si Int(str_ImgWidth) > 600 Alors
str_ImgWidth = 600
Autre
str_ImgWidth = str_ImgWidth
Fin si
'Ajouter un filigrane
Si Int(str_ImgWidth) > 300 Et Int(str_ImgHeight) > 100 Alors
LocalFile=Server.MapPath(SavefullPath)
TargetFile=Server.MapPath(SavefullPath)
DimJpeg
Définir Jpeg = Server.CreateObject (Persits.Jpeg)
Si -2147221005=Err alors
Response.Write(<script language='javascript'>alert('Ce composant n'existe pas, veuillez l'installer !'); history.back();</script>) 'Vérifiez si le composant AspJpeg est installé
Réponse.Fin()
Fin si
Jpeg.Open (LocalFile) 'Ouvrir l'image
Si numéro d'erreur alors
Response.Write(<script language='javascript'>alert('Échec de l'ouverture de l'image, veuillez vérifier le chemin !'); history.back();</script>)
Réponse.Fin()
Terminer si
Faible aa
aa=Jpeg.Binary 'Attribuer les données originales à aa
'==========Ajouter un filigrane de texte==================
Jpeg.Canvas.Font.Color = &Hfffffff 'Couleur du texte du filigrane
Jpeg.Canvas.Font.Family = Police Arial
Jpeg.Canvas.Font.Bold = True 'En gras
Jpeg.Canvas.Font.Size = 20' Taille de la police
Jpeg.Canvas.Font.ShadowColor = &H000000 'Couleur de l'ombre
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Vrai
Jpeg.Canvas.Font.Quality = 10 '' 'Qualité de sortie
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40, Jpeg.OriginalHeight/2-10, position et texte du filigrane de la construction du site Web
bb=Jpeg.Binary 'Attribuez la valeur à bb après le traitement du filigrane de texte. À ce stade, le filigrane de texte n'a pas d'opacité.
'============Ajuster la transparence du texte================
Définir MyJpeg = Server.CreateObject (Persits.Jpeg)
MyJpeg.OpenBinary aa
Définir le logo = Server.CreateObject (Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0.5 '0.3 est la transparence
cc=MyJpeg.Binary 'Attribuez le résultat final à cc À ce stade, l'image cible peut également être générée.
Response.BinaryWrite cc 'Sortie binaire vers le navigateur
MyJpeg.Save (TargetFile)
définir aa = rien
setbb=rien
setcc = rien
Jpeg.Fermer
MonJpeg.Fermer
Logo.Fermer
Fin si
'Ajouter un filigrane
%>