ASP requer componentes para adicionar marcas d'água às imagens. Os softwares comumente usados incluem o software aspjpeg e o software wsImage desenvolvido pelos chineses. Afinal, é um software. Versão chinesa e é fácil de operar. SP requer componentes para adicionar marcas d'água às imagens... Os softwares comumente usados incluem o software aspjpeg e o software wsImage desenvolvido pelos chineses. Afinal, você pode pesquisar e baixar esses dois softwares. é a versão chinesa. Fácil de operar.
Como registrar um componente :
Basta digitar regsvr32 [caminho da DLL] no prompt de comando.
Adicionar uma marca d'água a uma imagem nada mais é do que obter o tamanho da imagem e depois escrever a marca d'água nela. O código ASP serve apenas como um componente de controle.
1: Obtenha o tamanho da imagem (aqui expresso em valores de pixel. Amigos que aprendem Photoshop devem entender)
Copie o código do código da seguinte forma:
<%
set obj=server.CreateObject(wsImage.Resize) ''Componente de chamada
obj.LoadSoucePic server.mappath(25.jpg) ''Abra a imagem, o nome da imagem é 25.jpg
obj.GetSourceInfo iWidth,iHeight
response.write largura da imagem: & iWidth & <br> ''Obter largura da imagem
response.write altura da imagem: & iHeight & <br> ''Obter a altura da imagem
strError=obj.errorinfo
se strError<> então
resposta.write obj.errorinfo
terminar se
obj.free
definir obj = nada
%>
''------------------------------------------------ ----------------''
2: Adicionar marca d'água de texto
Copie o código do código da seguinte forma:
<%
definir obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Carregar imagens
obj.Qualidade=75
obj.TxtMarkFont = Chinês Caiyun''Definir a fonte do texto da marca d'água
obj.TxtMarkBond = false ''Defina a espessura do texto da marca d'água
obj.MarkRotate = 0 ''Ângulo de rotação do texto da marca d'água
obj.TxtMarkHeight = 25 ''Altura do texto da marca d'água
obj.AddTxtMark server.mappath(txtMark.jpg), leva você para fora do país, &H00FF00&, 10, 70
strError=obj.errorinfo ''Gere o nome da imagem, a cor do texto é a posição da marca d'água na imagem
se strError<> então
resposta.write obj.errorinfo
terminar se
obj.free
definir obj = nada
%>
''------------------------------------------------ ----------------''
Três: Adicionar marca d'água de imagem
Copie o código do código da seguinte forma:
<%
definir obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Carregar imagens
obj.LoadImgMarkPic server.mappath(blend.bmp) ''Carregar imagem da marca d'água
obj.Qualidade=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220,&hFFFFFF, 70
strError=obj.errorinfo ''Gere o nome da imagem, a cor do texto é a posição da marca d'água na imagem
se strError<> então
resposta.write obj.errorinfo
terminar se
obj.free
definir obj = nada
%>
''------------------------------------------------ ----------------''
Na verdade, adicionar marcas d'água a imagens é tão simples quanto isso. A seguir falarei sobre os outros dois usos principais do componente WsImage.dll.
Corte fotos e gere miniaturas de fotos.
Ainda estou acostumado a usar código e adicionar comentários:
Cortar imagem:
Copie o código do código da seguinte forma:
<%
definir obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg)
obj.Qualidade=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''Defina o tamanho do corte e gere o nome da imagem
strError=obj.errorinfo
se strError<> então
resposta.write obj.errorinfo
terminar se
obj.free
definir obj = nada
%>
Nota detalhada: O método CropImage do WsImage é utilizado para recortar a imagem. É definido que ao gerar a imagem, 100 e 10 são os pontos de recorte no canto superior esquerdo, ou seja, 100 pixels do lado esquerdo da imagem e. 10 pixels do topo. Os dois últimos 200 representam corte de banda larga e altura.
''------------------------------------------------ ----------------''
Gere miniaturas de imagens :
Copie o código do código da seguinte forma:
<%
definir obj=server.CreateObject(wsImage.Resize)
obj.LoadSoucePic server.mappath(25.jpg) ''Carregar imagens
obj.Qualidade=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''Defina o nome da miniatura, que é o tamanho
strError=obj.errorinfo
se strError<> então
resposta.write obj.errorinfo
terminar se
obj.free
definir obj = nada
%>
Descrição detalhada:
Existem quatro métodos de exportação para gerar miniaturas :
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200 é a largura de saída e 150 é a altura de saída. Este formato de saída força a largura e a altura de saída, o que pode causar deformação da imagem.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
Tomando 200 como largura de saída, a altura de saída será dimensionada com a coluna.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
Tomando 200 como altura de saída, a largura de saída será dimensionada com a coluna.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
O primeiro 0,5 significa que a miniatura gerada tem metade da largura da imagem original, o que significa que a largura é reduzida.
O segundo 0,5 significa que a miniatura gerada tem metade da altura da imagem original, o que significa uma alta taxa de redução.
A mesma proporção de redução de largura e altura significa que a imagem original será reduzida. Se a proporção de escala entre largura e altura for maior que 1, a imagem original será ampliada.
2---------------------------------------------------------------- -----------------------------------------------
Copie o código do código da seguinte forma:
<%
Dim stream1,stream2,istart,iend,nome do arquivo
istart = 1
vbEnter=Chr(13)&Chr(10)
function getvalue(fstr,foro,paths)'fstr é o nome recebido, foro Boolean false é upload de arquivo, true é um campo normal, path é o caminho de armazenamento do arquivo de upload
se for então
obter valor =
istart=instring(istart,fstr)
istart=istart+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
se istart>5+len(fstr) então
getvalor=substring(istart,iend-istart)
outro
obter valor =
terminar se
outro
istart=instring(istart,fstr)
istart=istart+len(fstr)+13
iend=instring(istart,vbenter)-1
nome do arquivo=substring(istart,iend-istart)
filename9=right(getfilename(filename),4)'Obtém o sufixo do arquivo original
filename8=ano(agora())&mês(agora())&dia(agora())&hora(agora())&minuto(agora())&segundo(agora())&int(9*10^3*rnd)+10 ^3'Obtenha um nome de arquivo aleatório,
'Se você quiser aumentar o nome do arquivo, modifique o valor de 100 in (100*rnd)
filename=replace(getfilename(filename),getfilename(filename),filename8) 'Substitua o nome do arquivo original e use a função de substituição
filename=filename&filename9 'Adicionar sufixo de arquivo, a regra é adicionar o sufixo do arquivo original ao nome de arquivo aleatório gerado
istart=instring(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
arquivostart = istart
tamanho do arquivo=iend-istart-1
objstream.position = início do arquivo
Definir sf = Server.CreateObject(ADODB.Stream)
sf.Modo=3
sf.Tipo = 1
sf.Abrir
objstream.copyto sf,Tamanho do arquivo
se nome do arquivo<> então
Definir rf = Server.CreateObject(Scripting.FileSystemObject)
eu=0
fn=nome do arquivo
enquanto rf.FileExists(server.mappath(paths+fn))
fn=cstr(i)+nome do arquivo
eu=eu+1
vamos
nome do arquivo=fn
sf.SaveToFile server.mappath(caminhos+nome do arquivo),2
''''''''''''''''''''''''''''''''''''''''
DimJpeg
Definir Jpeg = Server.CreateObject(Persits.Jpeg)
Se -2147221005=Erro então
Response.write Não existe tal componente, instale-o 'Verifique se o componente AspJpeg está instalado!
Resposta.End()
Terminar se
Jpeg.Open (server.mappath(paths+filename)) 'Abre a imagem
Se err.número então
Response.write não conseguiu abrir a imagem, verifique o caminho!
Resposta.End()
Terminar se
Dim aa
aa=Jpeg.Binary 'Atribuir dados originais a aa
'==========Adicionar marca d’água de texto==================
Jpeg.Canvas.Font.Color = &Hff0000 'Cor do texto da marca d'água
Jpeg.Canvas.Font.Family = fonte Arial'
Jpeg.Canvas.Font.Bold = True 'Se usar negrito
Jpeg.Canvas.Font.Size = tamanho da fonte 30'
Jpeg.Canvas.Font.ShadowColor = &H000000 'Cor da sombra
JPEG.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Verdadeiro
Jpeg.Canvas.Font.Quality = 4 'Qualidade de saída
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com 'Posição e texto da marca d'água
bb=Jpeg.Binary 'Atribuir o valor após o processamento da marca d'água do texto para bb Neste momento, a marca d'água do texto não tem opacidade.
'============Ajustar a transparência do texto================
Definir MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Definir logotipo = Server.CreateObject (Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0,2 '0,3 é transparência
cc=MyJpeg.Binary 'Atribuir o resultado final a cc. Neste momento, a imagem de destino também pode ser gerada.
response.BinaryWrite cc 'Saída binária para o navegador
MyJpeg.Save (server.mappath(caminhos+nome do arquivo))
definir aa = nada
setbb = nada
setcc = nada
JPEG.fechar
MeuJpeg.Fechar
Logotipo.Fechar
'''''''''''''''''''''''''''''''''''''''' '''
terminar se
getvalor=nome do arquivo
terminar se
função final
Função subString(theStart,theLen)
dimi,c,temp
objStream.Position=theStart-1
haste =
para i=1 para theLen
se objStream.EOS então saia para
c=ascB(objStream.Read(1))
Se c > 127 Então
se objStream.EOS então saia para
temp=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
eu=eu+1
outro
temp = temp&Chr(c)
Terminar se
Próximo
subString=stemp
Função final
Função inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
para i=theStart para objStream.Size-theLen
se i> objstream.size então saia da função
objstream.Position=i-1
se AscB(objstream.Read(1))=AscB(midB(Str,1)) então
InString=i
para j = 2 para oLen
se objstream.EOS então
inString=0
Sair para
terminar se
se AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) então
InString=0
Sair para
terminar se
próximo
se InString<>0 então Sair da Função
terminar se
próximo
Função final
Função privada GetFileName(FullPath)
Se FullPath <> Então
GetFileName = mid(CaminhoFull,InStrRev(CaminhoFull, /)+1)
Outro
ObterNomeArquivo =
Terminar se
Função final
função toByte(Str)
escurecer i,iCode,c,iLow,iHigh
toByte=
Para i=1 para Len(Str)
c=meio(Str,i,1)
iCode =Asc(c)
Se iCode<0 Então iCode = iCode + 65535
Se iCode>255 então
iBaixo = Esquerda(Hex(Asc(c)),2)
iAlto =Direita(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iLow) & chrB(&H&iHigh)
Outro
toByte = toByte & chrB(AscB(c))
Terminar se
Próximo
Função final
%>
3------------------------------------------------- -----------------------------------------------
Use o componente asp Persits.Jpeg para adicionar marca d'água às imagens e gerar miniaturas
Copie o código do código da seguinte forma:
<%
Nome do arquivo = 1.jpg
Definir Jpeg = Server.CreateObject(Persits.Jpeg)
'Obtém o caminho da imagem de origem
Caminho = Server.MapPath (Nome do Arquivo)
'Abre a imagem fonte
'resposta.write(Caminho)
Jpeg.Caminho aberto
'Defina os detalhes da geração de miniaturas Existem muitos métodos de configuração. O método a seguir é primeiro determinar a proporção e depois dimensioná-la proporcionalmente.
Se Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1 então
Jpeg.Largura = 98
Jpeg.Altura = int((98/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
elseif Jpeg.OriginalWidth / Jpeg.OriginalHeight < 1 então
Jpeg.Largura = 98
Jpeg.Altura= int((98/Jpeg.Largura Original)*Jpeg.Altura)
terminar se
'Definir efeito de nitidez
JPEG.Sharpen 1, 130
'Gera miniaturas para o caminho especificado
Response.Write Servidor.MapPath(.)
Jpeg.Save Server.MapPath(.)&/pequeno/&nome do arquivo
'response.write nome do arquivo1
'response.write Server.MapPath(uploadpic/small)&/&nomedoarquivo1
'Preste atenção nessas duas sessões
'Sessão(PPP0)=GP_curPath&NomeArquivo
'Sessão(PPP1)=GP_curPath&pequeno&Nome do arquivo
Definir JPEG = Nada
'Gerar automaticamente imagem em miniatura e finalizar
'Iniciar marca d'água em fotos grandes
'Cria uma instância
Definir Jpeg = Server.CreateObject(Persits.Jpeg)
'Abre a imagem alvo
Caminho = Server.MapPath (Nome do Arquivo)
'Abre a imagem fonte
Jpeg.Caminho aberto
'Adicionar marca d'água de texto
Jpeg.Canvas.Font.Color = &HFF0000' Vermelho
Jpeg.Canvas.Font.Family = Dinastia Song
Jpeg.Canvas.Font.Bold = Verdadeiro
Jpeg.Canvas.Print 10, 10, Tecnologia Honglan
'Salvar arquivo
Jpeg.Save Server.MapPath(.)&/small/w_&nome do arquivo
'Cancela o registro do objeto
Definir JPEG = Nada
'A marca d'água da imagem grande termina
%>
4---------------------------------------------------------------- -----------------------------------------------
Use ASPJPEG para construir código de implementação ASP com marca d'água
Copie o código do código da seguinte forma:
<%
Classe qswhImg
escurecer também
Subclasse Privada_Initialize
definir aso=CreateObject(Adodb.Stream)
aso.Mode=3
aso.Type=1
aso.Abrir
Finalizar sub
Subclasse Privada_Terminate
definir aso = nada
Finalizar sub
Função privada Bin2Str(Bin)
Dim I, Str
Para I=1 para LenB(Bin)
clow=MidB(Bin,I,1)
se ASCB(clow)<128 então
Str = Str & Chr(ASCB(clow))
outro
Eu=eu+1
se eu <= LenB(Bin) então Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
terminar se
Próximo
Bin2Str = Str
Função final
Função privada Num2Str(num,base,lente)
'Qiushuiwuhen (12/08/2002)
escuro
ret =
enquanto(num>=base)
ret = (num mod base) & ret
num = (num - num mod base)/base
vamos
Num2Str = direita(string(lente,0) & num & ret,lente)
Função final
Função privada Str2Num(str,base)
'Qiushuiwuhen (12/08/2002)
escuro
ret = 0
para i=1 para len(str)
ret = ret *base + cint(mid(str,i,1))
próximo
Str2Num=ret
Função final
Função privada BinVal(bin)
'Qiushuiwuhen (12/08/2002)
escuro
ret = 0
para i = lenb(bin) para 1 passo -1
ret = ret *256 + ascb(midb(bin,i,1))
próximo
BinVal=ret
Função final
Função privada BinVal2(bin)
'Qiushuiwuhen (12/08/2002)
escuro
ret = 0
para i = 1 para lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
próximo
BinVal2=ret
Função final
Função getImageSize(filespec)
'Qiushuiwuhen (3/09/2002)
escurecer ret(3)
aso.LoadFromFile(filespec)
bFlag=aso.read(3)
selecione caso hexadecimal (binVal (bFlag))
caso 4E5089:
aso.ler(15)
ret(0)=PNG
ret(1)=BinVal2(aso.read(2))
aso.ler(2)
ret(2)=BinVal2(aso.read(2))
caso 464947:
aso.ler(3)
ret(0)=GIF
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
caso 535746:
aso.ler(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(esquerda(sConv,5),2)
sConv=meio(sConv,6)
while(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2,8)
vamos
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)
caso FFD8FF:
fazer
faça: p1=binVal(aso.Read(1)): loop while p1=255 e não aso.EOS
se p1>191 e p1<196 então saia faça else aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):loop while p1<255 e não aso.EOS
loop enquanto verdadeiro
também.Leia(3)
ret(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Leitura(2))
caso contrário:
se esquerda(Bin2Str(bFlag),2)=BM então
também.Leia(15)
ret(0)=BMP
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
outro
ret(0)=
terminar se
final selecionar
ret(3)=largura= & ret(1) & altura= & ret(2) &
getimagesize=ret
Função final
Fim da aula
SavefullPath=326151745wldn.jpg 'Atribuição de caminho de imagem ou atribuição de variável de caminho de imagem
'Obtém a largura da imagem
Definir qswh = novo qswhImg
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
Definir qswh = Nada
str_ImgWidth=arr(1)
str_ImgHeight=arr(2)
Se Int(str_ImgWidth) > 600 Então
str_ImgWidth = 600
Outro
str_ImgWidth = str_ImgWidth
Terminar se
'Adicionar marca d'água
Se Int(str_ImgWidth) > 300 E Int(str_ImgHeight) > 100 Então
LocalFile=Server.MapPath(SavefullPath)
TargetFile=Server.MapPath(SavefullPath)
DimJpeg
Definir Jpeg = Server.CreateObject(Persits.Jpeg)
Se -2147221005=Erro então
Response.Write(<script language='javascript'>alert('Este componente não existe, instale-o!'); history.back();</script>) 'Verifique se o componente AspJpeg está instalado
Resposta.End()
Terminar se
Jpeg.Open (LocalFile) 'Abre a imagem
Se err.número então
Response.Write(<script language='javascript'>alert('Falha ao abrir a imagem, verifique o caminho!'); history.back();</script>)
Resposta.End()
Terminar se
Dim aa
aa=Jpeg.Binary 'Atribuir dados originais a aa
'==========Adicionar marca d’água de texto==================
Jpeg.Canvas.Font.Color = &Hfffffff 'Cor do texto da marca d'água
Jpeg.Canvas.Font.Family = Fonte Arial
Jpeg.Canvas.Font.Bold = True 'Se usar negrito
Jpeg.Canvas.Font.Size = 20 'Tamanho da fonte
Jpeg.Canvas.Font.ShadowColor = &H000000 'Cor da sombra
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = Verdadeiro
Jpeg.Canvas.Font.Quality = 10 ' 'Qualidade de saída
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40,Jpeg.OriginalHeight/2-10, posição e texto da marca d'água da construção do site
bb=Jpeg.Binary 'Atribuir o valor após o processamento da marca d'água do texto para bb Neste momento, a marca d'água do texto não tem opacidade.
'============Ajustar a transparência do texto================
Definir MyJpeg = Server.CreateObject(Persits.Jpeg)
MyJpeg.OpenBinary aa
Definir logotipo = Server.CreateObject (Persits.Jpeg)
Logo.OpenBinarybb
MyJpeg.DrawImage 0,0, Logo, 0,5 '0,3 é transparência
cc=MyJpeg.Binary 'Atribuir o resultado final a cc. Neste momento, a imagem de destino também pode ser gerada.
Response.BinaryWrite cc 'Saída binária para o navegador
MeuJpeg.Save (TargetFile)
definir aa = nada
setbb = nada
setcc = nada
JPEG.Fechar
MeuJpeg.Fechar
Logotipo.Fechar
Terminar se
'Adicionar marca d'água
%>