ASP requiere componentes para agregar marcas de agua a las imágenes. El software de uso común incluye el software aspjpeg y el software wsImage desarrollado por los chinos. Puede buscar y descargar estos dos programas en línea. Se recomienda utilizar wsImage desarrollado por los chinos. Versión china y fácil de operar. SP requiere componentes para agregar marcas de agua a las imágenes... El software de uso común incluye el software aspjpeg y el software wsImage desarrollado por los chinos. Puede buscar y descargar estos dos programas en línea. Se recomienda utilizar wsImage desarrollado por los chinos. Es la versión china fácil de operar.
Cómo registrar un componente :
Simplemente ingrese regsvr32 [ruta Dll] en el símbolo del sistema.
Agregar una marca de agua a una imagen no es más que obtener el tamaño de la imagen y luego escribir la marca de agua en ella. El código ASP solo sirve como componente de control. Usemos el código para explicar todo.
1: Obtenga el tamaño de la imagen (aquí expresado en valores de píxeles. Los amigos que aprenden PhotoShop deberían entenderlo)
Copie el código de código de la siguiente manera:
<%
set obj=server.CreateObject(wsImage.Resize) ''Llamar componente
obj.LoadSoucePic server.mappath(25.jpg) ''Abra la imagen, el nombre de la imagen es 25.jpg
obj.GetSourceInfo iAncho,iAlto
respuesta.escribir ancho de imagen: & iWidth & <br> ''Obtener ancho de imagen
Response.write altura de la imagen: & iHeight & <br> ''Obtener la altura de la imagen
strError=obj.errorinfo
si strError<> entonces
respuesta.escribir obj.errorinfo
terminar si
obj.libre
establecer obj = nada
%>
''------------------------------------------------ ----------------''
2: Agregar marca de agua de texto
Copie el código de código de la siguiente manera:
<%
establecer obj=servidor.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Cargar imágenes
obj.Calidad=75
obj.TxtMarkFont = Caiyun chino''Establece la fuente del texto de la marca de agua
obj.TxtMarkBond = false ''Establece el grosor del texto de la marca de agua
obj.MarkRotate = 0 ''Ángulo de rotación del texto de la marca de agua
obj.TxtMarkHeight = 25 ''Altura del texto de la marca de agua
obj.AddTxtMark server.mappath(txtMark.jpg), sacarte del país, &H00FF00&, 10, 70
strError=obj.errorinfo ''Genere el nombre de la imagen, el color del texto es la posición de la marca de agua en la imagen
si strError<> entonces
respuesta.escribir obj.errorinfo
terminar si
obj.libre
establecer obj = nada
%>
''------------------------------------------------ ----------------''
Tres: agregar marca de agua a la imagen
Copie el código de código de la siguiente manera:
<%
establecer obj=servidor.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Cargar imágenes
obj.LoadImgMarkPic server.mappath(blend.bmp) ''Cargar imagen de marca de agua
obj.Calidad=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220 y hFFFFFF, 70
strError=obj.errorinfo ''Genere el nombre de la imagen, el color del texto es la posición de la marca de agua en la imagen
si strError<> entonces
respuesta.escribir obj.errorinfo
terminar si
obj.libre
establecer obj = nada
%>
''------------------------------------------------ ----------------''
De hecho, agregar marcas de agua a las imágenes es tan simple como eso. Luego hablaré sobre los otros dos usos principales del componente WsImage.dll.
Recorta imágenes y genera miniaturas de imágenes.
Todavía estoy acostumbrado a usar código y agregar comentarios:
Recortar imagen:
Copie el código de código de la siguiente manera:
<%
establecer obj=servidor.CreateObject(wsImage.Resize)
obj.LoadSoucePic servidor.mappath(25.jpg)
obj.Calidad=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''Definir el tamaño de recorte y generar el nombre de la imagen
strError=obj.errorinfo
si strError<> entonces
respuesta.escribir obj.errorinfo
terminar si
obj.libre
establecer obj = nada
%>
Nota detallada: El método CropImage de WsImage se utiliza para recortar la imagen. Se define que al generar la imagen, 100 y 10 son los puntos de recorte en la esquina superior izquierda, es decir, a 100 píxeles del lado izquierdo de la imagen. 10 píxeles desde la parte superior. Los dos últimos 200 representan recortes de banda ancha y altura.
''------------------------------------------------ ----------------''
Generar miniaturas de imágenes :
Copie el código de código de la siguiente manera:
<%
establecer obj=servidor.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Cargar imágenes
obj.Calidad=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''Define el nombre de la miniatura, que es el tamaño
strError=obj.errorinfo
si strError<> entonces
respuesta.escribir obj.errorinfo
terminar si
obj.libre
establecer obj = nada
%>
Descripción detallada:
Hay cuatro métodos de exportación para generar miniaturas :
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200 es el ancho de salida y 150 es el alto de salida. Esta forma de salida fuerza el ancho y el alto de salida, lo que puede causar deformación de la imagen.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
Tomando 200 como ancho de salida, la altura de salida se escalará con la columna.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
Tomando 200 como altura de salida, el ancho de salida se escalará con la columna.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
El primer 0,5 significa que la miniatura generada tiene la mitad del ancho de la imagen original, lo que significa que el ancho se reduce.
El segundo 0,5 significa que la miniatura generada tiene la mitad de la altura de la imagen original, lo que significa una relación de reducción alta.
La misma relación de reducción de ancho y alto significa que la imagen original se reducirá. Si la relación de escala de ancho y alto es mayor que 1, la imagen original se ampliará.
2------------------------------------------------- -----------------------------------------
Copie el código de código de la siguiente manera:
<%
Dim stream1,stream2,istart,iend,nombre de archivo
inicio=1
vbEntrar=Chr(13)&Chr(10)
función getvalue(fstr,foro,paths)'fstr es el nombre recibido, foro booleano falso es la carga del archivo, verdadero es un campo normal, ruta es la ruta de almacenamiento del archivo cargado
si es así entonces
obtener valor =
istart=cadena(istart,fstr)
istart=istart+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
si istart>5+len(fstr) entonces
getvalue=subcadena(istart,iend-istart)
demás
obtener valor =
terminar si
demás
istart=cadena(istart,fstr)
istart=istart+len(fstr)+13
iend=cadena(istart,vbenter)-1
nombre de archivo = subcadena (istart, iend-istart)
filename9=right(getfilename(filename),4)'Obtener el sufijo del archivo original
nombre de archivo8=año(ahora())&mes(ahora())&día(ahora())&hora(ahora())&minuto(ahora())&segundo(ahora())&int(9*10^3*rnd)+10 ^3'Obtener un nombre de archivo aleatorio,
'Si desea alargar el nombre del archivo, modifique el valor de 100 en (100*rnd)
filename=replace(getfilename(filename),getfilename(filename),filename8) 'Reemplace el nombre del archivo original y use la función de reemplazo
filename=filename&filename9 'Agregar sufijo de archivo, la regla es agregar el sufijo de archivo original al nombre de archivo aleatorio generado
istart=cadena(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
inicio de archivo=iiniciar
tamaño de archivo = amigo-istart-1
objstream.position=inicio de archivo
Establecer sf = Server.CreateObject(ADODB.Stream)
Modo sf = 3
sf.Tipo=1
sf.abierto
objstream.copyto sf, tamaño de archivo
si nombre de archivo <> entonces
Establecer rf = Server.CreateObject(Scripting.FileSystemObject)
yo=0
fn=nombre de archivo
mientras que rf.FileExists(server.mappath(rutas+fn))
fn=cstr(i)+nombre de archivo
yo=yo+1
encaminarse a
nombre de archivo = fn
sf.SaveToFile server.mappath(rutas+nombre de archivo),2
'''''''''''''''''''''''''''''''''''' '
DimJpeg
Establecer Jpeg = Server.CreateObject(Persits.Jpeg)
Si -2147221005=Error entonces
Response.write No existe tal componente, instálelo. 'Compruebe si el componente AspJpeg está instalado.
Respuesta.Fin()
Terminar si
Jpeg.Open (server.mappath(rutas+nombre de archivo)) 'Abre la imagen
Si número de error entonces
Response.write no pudo abrir la imagen, verifique la ruta.
Respuesta.Fin()
terminar si
tenue aa
aa=Jpeg.Binary 'Asignar datos originales a aa
'==========Agregar marca de agua de texto===================
Jpeg.Canvas.Font.Color = &Hff0000 'Color del texto de la marca de agua
Jpeg.Canvas.Font.Family = fuente Arial
Jpeg.Canvas.Font.Bold = True 'Si está en negrita
Jpeg.Canvas.Font.Size = tamaño de fuente 30'
Jpeg.Canvas.Font.ShadowColor = &H000000 'Color de sombra
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Verdadero
Jpeg.Canvas.Font.Quality = 4 'Calidad de salida
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com 'Posición y texto de la marca de agua
bb=Jpeg.Binary 'Asigne el valor después del procesamiento de la marca de agua de texto a bb. En este momento, la marca de agua de texto no tiene opacidad.
'============Ajustar la transparencia del texto=================
Establecer MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Establecer logotipo = Server.CreateObject(Persits.Jpeg)
Logotipo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0.2 '0.3 es transparencia
cc=MyJpeg.Binary 'Asigna el resultado final a cc. En este momento, también se puede generar la imagen de destino.
Response.BinaryWrite cc 'Salida binaria al navegador
MyJpeg.Save (servidor.mappath(rutas+nombre de archivo))
establecer aa = nada
setbb=nada
setcc=nada
Jpeg.cerrar
MiJpeg.Cerrar
Logo.Cerrar
'''''''''''''''''''''''''''''''''''' '''
terminar si
getvalue=nombre de archivo
terminar si
función final
Subcadena de función (el Inicio, la Len)
dimi, c, temp
objStream.Position=elInicio-1
temp =
para i=1 a theLen
si objStream.EOS entonces salga para
c=ascB(objStream.Read(1))
Si c > 127 Entonces
si objStream.EOS entonces salga para
temp=temp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
yo=yo+1
demás
temp=temp&Chr(c)
Terminar si
Próximo
subString=templo
Función final
Función en cadena (el inicio, varStr)
tenue i,j,bt,theLen,str
En cadena=0
Cadena=toByte(varStr)
laLen=LenB(Str)
para i=theStart a objStream.Size-theLen
si i>objstream.size entonces salga de la función
objstream.Posición=i-1
si AscB(objstream.Read(1))=AscB(midB(Str,1)) entonces
En cadena=i
para j=2 a la Len
si objstream.EOS entonces
en cadena=0
Salir por
terminar si
si AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) entonces
En cadena=0
Salir por
terminar si
próximo
si InString<>0 entonces sale de la función
terminar si
próximo
Función final
Función privada GetFileName (FullPath)
Si ruta completa <> entonces
GetFileName = mid(RutaCompleta,InStrRev(RutaCompleta, /)+1)
Demás
Obtener nombre de archivo =
Terminar si
Función final
función toByte(Str)
tenue i,iCode,c,iBajo,iAlto
aByte=
Para i=1 a Len(Str)
c=medio(Str,i,1)
Código i =Asc(c)
Si iCode<0 Entonces iCode = iCode + 65535
Si iCode>255 entonces
iBajo = Izquierda(Hex(Asc(c)),2)
iAlto = Derecha(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iBajo) & chrB(&H&iAlto)
Demás
toByte = toByte & chrB(AscB(c))
Terminar si
Próximo
Función final
%>
3------------------------------------------------- -----------------------------------------
Utilice el componente asp Persits.Jpeg para agregar marcas de agua a las imágenes y generar miniaturas
Copie el código de código de la siguiente manera:
<%
Nombre de archivo = 1.jpg
Establecer Jpeg = Server.CreateObject(Persits.Jpeg)
'Obtiene la ruta de la imagen de origen
Ruta = Server.MapPath (Nombre de archivo)
'Abre la imagen fuente
'respuesta.escribir(Ruta)
Jpeg.Ruta abierta
'Establezca los detalles de la generación de miniaturas. Hay muchos métodos de configuración. El siguiente método consiste en determinar primero la relación de aspecto y luego escalarla proporcionalmente.
Si Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1 entonces
Jpeg.Ancho = 98
Jpeg.Altura = int((98/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
elseif Jpeg.OriginalWidth / Jpeg.OriginalHeight <1 entonces
Jpeg.Ancho = 98
Jpeg.Altura= int((98/Jpeg.OriginalWidth)*Jpeg.Altura)
terminar si
'Establecer efecto de nitidez
Jpeg.Enfocar 1, 130
'Generamos miniaturas para la ruta especificada
Respuesta.Escribir servidor.MapPath(.)
Jpeg.Save Server.MapPath(.)&/small/&nombre de archivo
'respuesta.escribir nombre de archivo1
'response.write Server.MapPath(uploadpic/small)&/&nombre de archivo1
'Presta atención a estas dos sesiones
'Sesión(PPP0)=GP_curPath&NombreDeArchivo
'Sesión(PPP1)=GP_curPath&small&FileName
Establecer Jpeg = Nada
'Generar automáticamente una imagen en miniatura y finalizar
'Comenzar a poner marcas de agua en imágenes grandes
'Crear una instancia
Establecer Jpeg = Server.CreateObject(Persits.Jpeg)
'Abre la imagen de destino
Ruta = Server.MapPath (Nombre de archivo)
'Abre la imagen fuente
Jpeg.Ruta abierta
'Agregar marca de agua de texto
Jpeg.Canvas.Font.Color = &HFF0000' Rojo
Jpeg.Canvas.Font.Family = Dinastía Song
Jpeg.Canvas.Font.Bold = Verdadero
Jpeg.Canvas.Print 10, 10, Tecnología Honglan
'Guardar archivo
Jpeg.Save Server.MapPath(.)&/small/w_&nombre de archivo
'Dar de baja el objeto
Establecer Jpeg = Nada
'La marca de agua de imagen grande termina
%>
4------------------------------------------------- -----------------------------------------
Utilice ASPJPEG para crear código de implementación ASP con marca de agua
Copie el código de código de la siguiente manera:
<%
Clase qswhImg
tenue también
Subclase privada_Inicializar
establecer comoo=CreateObject(Adodb.Stream)
aso.Modo=3
aso.Tipo=1
aso.Abierto
Subtítulo final
Subclase privada_Terminar
establecer como = nada
Subtítulo final
Función privada Bin2Str(Bin)
Dim I, Str
Para I=1 a LenB(Bin)
clow=MidB(Bin,I,1)
si ASCB(clow)<128 entonces
Str = Str y Chr(ASCB(clow))
demás
yo=yo+1
si I <= LenB(Bin) entonces Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
terminar si
Próximo
Bin2Str = Cadena
Función final
Función privada Num2Str(num,base,lente)
'qiushuiwuhen (2002-8-12)
retiro oscuro
retirarse =
mientras(núm>=base)
ret = (núm base mod) & ret
núm = (núm - núm mod base)/base
encaminarse a
Num2Str = derecha(cadena(lente,0) & num & ret,lente)
Función final
Función privada Str2Num(cadena,base)
'qiushuiwuhen (2002-8-12)
retiro oscuro
retiro = 0
para i=1 a len(cadena)
ret = ret *base + cint(medio(cadena,i,1))
próximo
Str2Num=ret
Función final
Función privada BinVal(bin)
'qiushuiwuhen (2002-8-12)
retiro oscuro
retiro = 0
para i = lenb(bin) a 1 paso -1
ret = ret *256 + ascb(midb(bin,i,1))
próximo
BinVal=ret
Función final
Función privada BinVal2(bin)
'qiushuiwuhen (2002-8-12)
retiro oscuro
retiro = 0
para i = 1 a lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
próximo
BinVal2=ret
Función final
Función getImageSize (especificación de archivo)
'qiushuiwuhen (3 de septiembre de 2002)
retiro tenue(3)
aso.LoadFromFile (especificación de archivo)
bFlag=aso.read(3)
seleccione caso hexadecimal (binVal (bFlag))
caso 4E5089:
aso.leer(15)
ret(0)=PNG
ret(1)=BinVal2(aso.read(2))
aso.leer(2)
ret(2)=BinVal2(aso.read(2))
caso 464947:
aso.leer(3)
retiro(0)=GIF
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
caso 535746:
aso.leer(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(izquierda(sConv,5),2)
sConv=media(sConv,6)
mientras(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2,8)
encaminarse a
retiro(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)
caso FFD8FF:
hacer
hacer: p1=binVal(aso.Read(1)): bucle mientras p1=255 y no aso.EOS
si p1>191 y p1<196 entonces salga, haga lo contrario aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)): bucle mientras p1<255 y no aso.EOS
bucle mientras es verdadero
también.Leer(3)
retirar(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
caso más:
si izquierda (Bin2Str (bFlag), 2) = BM entonces
aso.Leer(15)
retiro(0)=BMP
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
demás
retirar(0)=
terminar si
finalizar seleccionar
ret(3)=ancho= & ret(1) & alto= & ret(2) &
getimagesize=ret
Función final
Fin de clase
SavefullPath=326151745wldn.jpg 'Asignación de ruta de imagen o asignación de variable de ruta de imagen
'Obtener el ancho de la imagen
Establecer qswh = nuevo qswhImg
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
Establecer qswh = Nada
str_ImgWidth=arr(1)
str_ImgHeight=arr(2)
Si Int(str_ImgWidth) > 600 Entonces
str_ImgWidth = 600
Demás
str_ImgWidth = str_ImgWidth
Terminar si
'Agregar marca de agua
Si Int(str_ImgWidth) > 300 e Int(str_ImgHeight) > 100 entonces
LocalFile=Servidor.MapPath(SavefullPath)
TargetFile=Servidor.MapPath(SavefullPath)
DimJpeg
Establecer Jpeg = Server.CreateObject(Persits.Jpeg)
Si -2147221005=Error entonces
Response.Write(<script language='javascript'>alert('¡Este componente no existe, instálelo!'); History.back();</script>) 'Compruebe si el componente AspJpeg está instalado
Respuesta.Fin()
Terminar si
Jpeg.Open (LocalFile) 'Abre la imagen
Si número de error entonces
Response.Write(<script language='javascript'>alert('¡Error al abrir la imagen, verifique la ruta!'); History.back();</script>)
Respuesta.Fin()
terminar si
tenue aa
aa=Jpeg.Binary 'Asignar datos originales a aa
'==========Agregar marca de agua de texto===================
Jpeg.Canvas.Font.Color = &Hfffffff 'Color del texto de la marca de agua
Jpeg.Canvas.Font.Family = Fuente Arial
Jpeg.Canvas.Font.Bold = True 'Si está en negrita
Jpeg.Canvas.Font.Size = 20 'Tamaño de fuente
Jpeg.Canvas.Font.ShadowColor = &H000000 'Color de sombra
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Verdadero
Jpeg.Canvas.Font.Quality = 10 ' 'Calidad de salida
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40,Jpeg.OriginalHeight/2-10, posición de marca de agua y texto de construcción del sitio web
bb=Jpeg.Binary 'Asigne el valor después del procesamiento de la marca de agua de texto a bb. En este momento, la marca de agua de texto no tiene opacidad.
'============Ajustar la transparencia del texto=================
Establecer MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Establecer logotipo = Server.CreateObject(Persits.Jpeg)
Logotipo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0.5 '0.3 es transparencia
cc=MyJpeg.Binary 'Asigna el resultado final a cc. En este momento, también se puede generar la imagen de destino.
Response.BinaryWrite cc 'Salida binaria al navegador
MyJpeg.Save (archivo de destino)
establecer aa = nada
setbb=nada
setcc=nada
Jpeg.Cerrar
MiJpeg.Cerrar
Logo.Cerrar
Terminar si
'Agregar marca de agua
%>