ASP에는 사진에 워터마크를 추가하는 구성 요소가 필요합니다. 일반적으로 사용되는 소프트웨어에는 중국인이 개발한 aspjpeg 소프트웨어와 wsImage 소프트웨어가 있습니다. 이 두 소프트웨어는 온라인에서 검색하고 다운로드할 수 있으며, 결국에는 중국인이 개발한 wsImage를 사용하는 것이 좋습니다. 중국어 버전이며 작동하기 쉽습니다. SP에는 사진에 워터마크를 추가하는 구성 요소가 필요합니다. 일반적으로 사용되는 소프트웨어에는 중국인이 개발한 aspjpeg 소프트웨어와 wsImage 소프트웨어가 있습니다. 이 두 소프트웨어는 온라인에서 검색하고 다운로드할 수 있으며, 결국에는 중국인이 개발한 wsImage를 사용하는 것이 좋습니다. 작동하기 쉬운 중국어 버전입니다.
구성 요소를 등록하는 방법 :
명령 프롬프트에 regsvr32 [Dll 경로]를 입력하면 됩니다.
이미지에 워터마크를 추가하는 것은 이미지의 크기를 구한 다음 그 위에 워터마크를 쓰는 것에 지나지 않습니다. ASP 코드는 단지 제어 구성 요소 역할만 합니다.
1: 이미지 크기를 가져옵니다 (여기서는 픽셀 값으로 표시됩니다. PhotoShop을 배우는 친구들은 이해해야 합니다).
다음과 같이 코드 코드를 복사합니다.
<%
set obj=server.CreateObject(wsImage.Resize) ''호출 구성 요소
obj.LoadSoucePic server.mappath(25.jpg) ''사진을 열어보세요. 사진 이름은 25.jpg 입니다.
obj.GetSourceInfo iWidth,iHeight
response.write 이미지 너비: & iWidth & <br> ''이미지 너비 가져오기
response.write 그림 높이: & iHeight & <br> ''그림 높이 가져오기
strError=obj.errorinfo
strError<>이면
response.write obj.errorinfo
종료하면
obj.free
obj=아무것도 설정하지 않음
%>
''------------------------------------------------ ----------------''
2: 텍스트 워터마크 추가
다음과 같이 코드 코드를 복사합니다.
<%
obj=server.CreateObject(wsImage.Resize) 설정
obj.LoadSoucePic server.mappath(25.jpg) ''사진 로드
obj.Quality=75
obj.TxtMarkFont = 중국어 Caiyun''워터마크 텍스트 글꼴 설정
obj.TxtMarkBond = false ''워터마크 텍스트의 두께를 설정합니다.
obj.MarkRotate = 0 ''워터마크 텍스트의 회전 각도
obj.TxtMarkHeight = 25 ''워터마크 텍스트 높이
obj.AddTxtMark server.mappath(txtMark.jpg), 당신을 국외로 데려가세요, &H00FF00&, 10, 70
strError=obj.errorinfo ''그림 이름을 생성합니다. 텍스트 색상은 그림의 워터마크 위치입니다.
strError<>이면
response.write obj.errorinfo
종료하면
obj.free
obj=아무것도 설정하지 않음
%>
''------------------------------------------------ ----------------''
3: 이미지 워터마크 추가
다음과 같이 코드 코드를 복사합니다.
<%
obj=server.CreateObject(wsImage.Resize) 설정
obj.LoadSoucePic server.mappath(25.jpg) ''사진 로드
obj.LoadImgMarkPic server.mappath(blend.bmp) ''워터마크 그림 로드
obj.Quality=75
obj.AddImgMark server.mappath(imgMark.jpg), 315, 220,&hFFFFFF, 70
strError=obj.errorinfo ''그림 이름을 생성합니다. 텍스트 색상은 그림의 워터마크 위치입니다.
strError<>이면
response.write obj.errorinfo
종료하면
obj.free
obj=아무것도 설정하지 않음
%>
''------------------------------------------------ ----------------''
실제로 사진에 워터마크를 추가하는 것은 그만큼 간단합니다. 그런 다음 WsImage.dll 구성 요소의 다른 두 가지 주요 용도에 대해 설명하겠습니다.
사진을 자르고 사진의 축소판을 생성합니다.
저는 여전히 코드를 사용하고 주석을 추가하는 데 익숙합니다.
자르기 이미지:
다음과 같이 코드 코드를 복사합니다.
<%
obj=server.CreateObject(wsImage.Resize) 설정
obj.LoadSoucePic server.mappath(25.jpg)
obj.Quality=75
obj.cropImage server.mappath(25_crop.jpg),100,10,200,200 ''자르기 크기 정의 및 이미지 이름 생성
strError=obj.errorinfo
strError<>이면
response.write obj.errorinfo
종료하면
obj.free
obj=아무것도 설정하지 않음
%>
상세 참고 사항: WsImage의 CropImage 메서드는 이미지를 자르는 데 사용됩니다. 이미지를 생성할 때 100과 10은 왼쪽 위 모서리의 자르기 지점, 즉 이미지 왼쪽에서 100픽셀이고 위에서 10픽셀은 광대역 및 높이의 자르기를 나타냅니다.
''------------------------------------------------ ----------------''
이미지 축소판 생성 :
다음과 같이 코드 코드를 복사합니다.
<%
obj=server.CreateObject(wsImage.Resize) 설정
obj.LoadSoucePic server.mappath(25.jpg) ''사진 로드
obj.Quality=75
obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3 ''썸네일의 이름을 정의합니다.
strError=obj.errorinfo
strError<>이면
response.write obj.errorinfo
종료하면
obj.free
obj=아무것도 설정하지 않음
%>
자세한 설명:
썸네일을 생성하는 데는 네 가지 내보내기 방법이 있습니다 .
(1) obj.OutputSpic server.mappath(25_s.jpg),200,150,0
200은 출력 너비이고 150은 출력 높이입니다. 이 출력 형식은 출력 너비와 높이를 강제하므로 이미지 변형이 발생할 수 있습니다.
(2) obj.OutputSpic server.mappath(25_s.jpg),200,0,1
출력 너비를 200으로 설정하면 출력 높이가 열에 따라 조정됩니다.
(3) obj.OutputSpic server.mappath(25_s.jpg),0,200,2
출력 높이로 200을 사용하면 출력 너비가 열에 따라 조정됩니다.
(4) obj.OutputSpic server.mappath(25_s.jpg),0.5,0.5,3
처음 0.5는 생성된 썸네일이 원본 이미지 너비의 절반이라는 의미로 너비가 줄어든다는 의미입니다.
두 번째 0.5는 생성된 썸네일의 높이가 원본 이미지 높이의 절반이라는 의미로 축소율이 높다는 의미입니다.
너비와 높이의 축소 비율이 동일하다는 것은 원본 이미지의 크기가 축소된다는 것을 의미합니다. 너비와 높이의 비율이 1보다 크면 원본 이미지가 확대됩니다.
2--------------------------------------------------- ----------------------------------
다음과 같이 코드 코드를 복사합니다.
<%
희미한 스트림1,스트림2,시작,iend,파일 이름
istart=1
vbEnter=문자(13)&문자(10)
function getvalue(fstr,foro,paths)'fstr은 수신된 이름, foro Boolean false는 파일 업로드, true는 일반 필드, path는 업로드 파일 저장 경로입니다.
만약 그렇다면
값 가져오기=
istart=instring(istart,fstr)
istart=시작+len(fstr)+5
iend=instring(istart,vbenter+--------------------------------)
istart>5+len(fstr)이면
getvalue=하위 문자열(istart,iend-istart)
또 다른
값 가져오기=
종료하면
또 다른
istart=instring(istart,fstr)
istart=시작+len(fstr)+13
iend=instring(istart,vbenter)-1
파일 이름=하위 문자열(istart,iend-istart)
filename9=right(getfilename(filename),4)'원본 파일 접미사 가져오기
filename8=연도(now())&월(now())&일(now())&시간(now())&분(now())&초(now())&int(9*10^3*rnd)+10 ^3'임의의 파일 이름을 가져오고,
'파일 이름을 길게 하고 싶다면 (100*rnd)에서 100이라는 값을 수정해주세요.
filename=replace(getfilename(filename),getfilename(filename),filename8) '원래 파일 이름을 바꾸고 바꾸기 함수를 사용합니다.
filename=filename&filename9 '파일 접미사 추가, 생성된 임의의 파일 이름에 원본 파일 접미사를 추가하는 것이 규칙입니다.
istart=instring(iend,vbenter+vbenter)+3
iend=instring(istart,vbenter+--------------------------------)
파일 시작=시작
파일 크기=iend-istart-1
objstream.position=filestart
sf = Server.CreateObject(ADODB.Stream) 설정
sf.모드=3
sf.유형=1
sf.오픈
objstream.copyto sf,파일 크기
파일 이름<>이면
rf = Server.CreateObject(Scripting.FileSystemObject) 설정
나는=0
fn=파일 이름
rf.FileExists(server.mappath(paths+fn)) 동안
fn=cstr(i)+파일 이름
나=나+1
향하게 하다
파일명=fn
sf.SaveToFile server.mappath(경로+파일 이름),2
'''''''''''''''''''''''''''''''''''''''''
DimJpeg
Jpeg = Server.CreateObject(Persits.Jpeg) 설정
-2147221005=Err이면
Response.write 해당 컴포넌트가 없습니다. 'AspJpeg 컴포넌트가 설치되어 있는지 확인해주세요!
응답.끝()
종료 조건
Jpeg.Open (server.mappath(paths+filename)) '사진 열기
번호에 오류가 있는 경우
Response.write가 이미지를 열지 못했습니다. 경로를 확인하세요!
응답.끝()
다음과 같은 경우 종료
딤 아아
aa=Jpeg.Binary 'aa에 원본 데이터 할당
'==========텍스트 워터마크 추가===================
Jpeg.Canvas.Font.Color = &Hff0000 '워터마크 텍스트 색상
Jpeg.Canvas.Font.Family = Arial' 글꼴
Jpeg.Canvas.Font.Bold = True '굵게 표시할지 여부
Jpeg.Canvas.Font.Size = 30' 글꼴 크기
Jpeg.Canvas.Font.ShadowColor = &H000000 '그림자 색상
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = 참
Jpeg.Canvas.Font.Quality = 4 '출력 품질
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-100,Jpeg.OriginalHeight/2+20,www.my9933.com '워터마크 위치 및 텍스트
bb=Jpeg.Binary '텍스트 워터마크 처리 후의 값을 bb에 할당합니다. 이때 텍스트 워터마크에는 불투명도가 없습니다.
'============텍스트 투명도 조정=================
MyJpeg = Server.CreateObject(Persits.Jpeg) 설정
MyJpeg.OpenBinary aa
로고 설정 = Server.CreateObject(Persits.Jpeg)
로고.OpenBinarybb
MyJpeg.DrawImage 0,0, 로고, 0.2 '0.3은 투명도입니다.
cc=MyJpeg.Binary '최종 결과를 cc에 할당합니다. 이때 대상 이미지도 생성할 수 있습니다.
response.BinaryWrite cc '브라우저에 바이너리 출력
MyJpeg.Save(server.mappath(경로+파일 이름))
aa=아무것도 설정하지 않음
setbb=아무것도 없음
setcc=아무것도 없음
JPEG.close
MyJpeg.닫기
로고.닫기
''''''''''''''''''''''''''''''''''''''' '''
종료하면
getvalue=파일 이름
종료하면
종료 기능
함수 하위 문자열(theStart,theLen)
디미,c,스템프
objStream.Position=theStart-1
줄기=
i=1에서 theLen까지
objStream.EOS인 경우 종료
c=ascB(objStream.Read(1))
c > 127이면
objStream.EOS인 경우 종료
줄기p=stemp&Chr(AscW(ChrB(AscB(objStream.Read(1)))&ChrB(c)))
나=나+1
또 다른
줄기=줄기&Chr(c)
종료 조건
다음
하위 문자열=stemp
기능 종료
함수 inString(theStart,varStr)
희미한 i,j,bt,theLen,str
문자열=0
Str=toByte(varStr)
theLen=LenB(Str)
i=theStart에서 objStream.Size-theLen으로
i>objstream.size이면 함수를 종료합니다.
objstream.Position=i-1
if AscB(objstream.Read(1))=AscB(midB(Str,1)) 그러면
InString=i
j=2에서 theLen까지
objstream.EOS인 경우
문자열=0
다음으로 종료
종료하면
if AscB(objstream.Read(1))<>AscB(MidB(Str,j,1)) then
문자열=0
종료 대상
종료하면
다음
InString<>0이면 함수 종료
종료하면
다음
기능 종료
개인 함수 GetFileName(FullPath)
FullPath <>인 경우
GetFileName = mid(FullPath,InStrRev(FullPath, /)+1)
또 다른
파일이름 가져오기 =
종료 조건
기능 종료
함수 toByte(Str)
희미한 i,iCode,c,iLow,iHigh
toByte=
i=1에서 Len(Str)으로
c=중간(Str,i,1)
아이코드 =Asc(c)
iCode<0이면 iCode = iCode + 65535
iCode>255이면
iLow = 왼쪽(Hex(Asc(c)),2)
iHigh =오른쪽(Hex(Asc(c)),2)
toByte = toByte & chrB(&H&iLow) & chrB(&H&iHigh)
또 다른
toByte = toByte & chrB(AscB(c))
종료 조건
다음
기능 종료
%>
3 ------------------------------------------------- ----------------------------------
ASP 구성 요소 Persits.Jpeg를 사용하여 사진에 워터마크를 추가하고 축소판을 생성합니다.
다음과 같이 코드 코드를 복사합니다.
<%
파일명=1.jpg
Jpeg = Server.CreateObject(Persits.Jpeg) 설정
' 소스 이미지 경로를 가져옵니다
경로 = Server.MapPath(파일 이름)
'소스 이미지 열기
'response.write(경로)
Jpeg.Open 경로
'썸네일 생성 세부 사항을 설정하는 방법은 여러 가지가 있습니다. 먼저 화면 비율을 결정한 다음 비례적으로 크기를 조정하는 방법이 있습니다.
Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1이면
JPEG.폭 = 98
Jpeg.Height = int((98/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
elseif Jpeg.OriginalWidth / Jpeg.OriginalHeight < 1이면
JPEG.폭 = 98
Jpeg.Height= int((98/Jpeg.OriginalWidth)*Jpeg.Height)
종료하면
'선명 효과 설정
Jpeg.Sharpen 1, 130
' 지정된 경로에 축소판을 생성합니다.
응답.쓰기 서버.MapPath(.)
Jpeg.저장 서버.MapPath(.)&/small/&파일 이름
'response.write 파일 이름1
'response.write Server.MapPath(uploadpic/small)&/&filename1
' 이 두 세션에 주목하세요
'세션(PPP0)=GP_curPath&파일 이름
'세션(PPP1)=GP_curPath&small&FileName
Jpeg = 없음 설정
'썸네일 이미지 자동 생성 후 종료
'큰 사진에 워터마킹 시작
'인스턴스를 생성한다
Jpeg = Server.CreateObject(Persits.Jpeg) 설정
'대상 이미지 열기
경로 = Server.MapPath(파일 이름)
'소스 이미지 열기
Jpeg.Open 경로
'텍스트 워터마크 추가
Jpeg.Canvas.Font.Color = &HFF0000' 빨간색
Jpeg.Canvas.Font.Family = 송나라
Jpeg.Canvas.Font.Bold = 참
Jpeg.Canvas.Print 10, 10, Honglan 기술
'파일 저장
Jpeg.저장 서버.MapPath(.)&/small/w_&파일 이름
'객체 등록을 취소합니다.
Jpeg = 없음 설정
'큰 사진 워터마킹이 종료됩니다.
%>
4--------------------------------------------------- ----------------------------------
ASPJPEG를 사용하여 워터마크가 있는 ASP 구현 코드 작성
다음과 같이 코드 코드를 복사합니다.
<%
클래스 qswhImg
희미한 아소
비공개 하위 클래스_초기화
aso=CreateObject(Adodb.Stream) 설정
aso.모드=3
aso.유형=1
aso.Open
서브 끝
비공개 하위 클래스_종료
aso=아무것도 설정하지 않음
서브 끝
개인 함수 Bin2Str(Bin)
희미한 I, Str
I=1에서 LenB(Bin)까지
clow=MidB(빈,I,1)
ASCB(clow)<128이면
Str = Str & Chr(ASCB(clow))
또 다른
나=나+1
I <= LenB(Bin)이면 Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
종료하면
다음
Bin2Str = Str
기능 종료
개인 함수 Num2Str(num,base,lens)
'추수이무헨(2002-8-12)
어두워
리트 =
동안(숫자>=기본)
ret = (num mod base) & ret
num = (num - num mod 베이스)/base
향하게 하다
Num2Str = right(string(lens,0) & num & ret,lens)
기능 종료
개인 함수 Str2Num(str,base)
'추수이무헨(2002-8-12)
어두워
레트 = 0
i=1에서 len(str)까지
ret = ret *base + cint(mid(str,i,1))
다음
Str2Num=ret
기능 종료
개인 함수 BinVal(bin)
'추수이무헨(2002-8-12)
어두워
레트 = 0
i = lenb(bin)에서 1단계 -1까지
ret = ret *256 + ascb(midb(bin,i,1))
다음
BinVal=ret
기능 종료
개인 함수 BinVal2(bin)
'추수이무헨(2002-8-12)
어두워
리트 = 0
i = 1에서 lenb(bin)까지
ret = ret *256 + ascb(midb(bin,i,1))
다음
BinVal2=ret
기능 종료
함수 getImageSize(filespec)
추수이무헨(2002-9-3)
희미한 레트(3)
aso.LoadFromFile(파일 사양)
bFlag=aso.read(3)
선택 사례 hex(binVal(bFlag))
사례 4E5089:
aso.read(15)
ret(0)=PNG
ret(1)=BinVal2(aso.read(2))
aso.read(2)
ret(2)=BinVal2(aso.read(2))
사례 464947:
aso.read(3)
ret(0)=GIF
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
케이스 535746:
aso.read(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(왼쪽(sConv,5),2)
sConv=중간(sConv,6)
while(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2,8)
향하게 하다
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)
케이스 FFD8FF:
하다
do: p1=binVal(aso.Read(1)): p1=255이고 aso.EOS가 아닌 동안 루프를 반복합니다.
p1>191이고 p1<196이면 종료합니다. else aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):p1<255이고 aso.EOS가 아닌 동안 루프
true인 동안 루프
aso.읽기(3)
ret(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
그 밖의 경우:
left(Bin2Str(bFlag),2)=BM이면
aso.읽기(15)
ret(0)=BMP
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
또 다른
리트(0)=
종료하면
선택 종료
ret(3)=너비= & ret(1) & 높이= & ret(2) &
getimagesize=ret
기능 종료
수업 종료
SavefullPath=326151745wldn.jpg '그림 경로 지정 또는 그림 경로 변수 지정
'이미지의 너비를 구하세요
qswh 설정 = 새 qswhImg
arr = qswh.getImageSize(Server.Mappath(SavefullPath))
qswh = 없음 설정
str_ImgWidth=arr(1)
str_ImgHeight=arr(2)
Int(str_ImgWidth) > 600이면
str_ImgWidth = 600
또 다른
str_ImgWidth = str_ImgWidth
종료 조건
'워터마크 추가
Int(str_ImgWidth) > 300 그리고 Int(str_ImgHeight) > 100이면
LocalFile=Server.MapPath(SavefullPath)
TargetFile=Server.MapPath(SavefullPath)
DimJpeg
Jpeg = Server.CreateObject(Persits.Jpeg) 설정
-2147221005=Err이면
Response.Write(<script 언어='javascript'>alert('이 구성 요소가 존재하지 않습니다. 설치하십시오!'); History.back();</script>) 'AspJpeg 구성 요소가 설치되어 있는지 확인하세요
응답.끝()
종료 조건
Jpeg.Open (LocalFile) '사진 열기
번호에 오류가 있는 경우
Response.Write(<script 언어='javascript'>alert('이미지를 열지 못했습니다. 경로를 확인하세요!'); History.back();</script>)
응답.끝()
다음과 같은 경우 종료
딤 아아
aa=Jpeg.Binary 'aa에 원본 데이터 할당
'==========텍스트 워터마크 추가===================
Jpeg.Canvas.Font.Color = &Hfffffff '워터마크 텍스트 색상
Jpeg.Canvas.Font.Family = Arial '글꼴
Jpeg.Canvas.Font.Bold = True '굵게 표시할지 여부
Jpeg.Canvas.Font.Size = 20 '글꼴 크기
Jpeg.Canvas.Font.ShadowColor = &H000000 '그림자 색상
Jpeg.Canvas.Font.ShadowYOffset = 1
Jpeg.Canvas.Font.ShadowXOffset = 1
Jpeg.Canvas.Brush.Solid = 참
Jpeg.Canvas.Font.Quality = 10 ' '출력 품질
Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-40,Jpeg.OriginalHeight/2-10, 웹사이트 구성' 워터마크 위치 및 텍스트
bb=Jpeg.Binary '텍스트 워터마크 처리 후의 값을 bb에 할당합니다. 이때 텍스트 워터마크에는 불투명도가 없습니다.
'============텍스트 투명도 조정=================
MyJpeg = Server.CreateObject(Persits.Jpeg) 설정
MyJpeg.OpenBinary aa
로고 설정 = Server.CreateObject(Persits.Jpeg)
로고.OpenBinarybb
MyJpeg.DrawImage 0,0, 로고, 0.5 '0.3은 투명도입니다.
cc=MyJpeg.Binary '최종 결과를 cc에 할당합니다. 이때 대상 이미지도 생성할 수 있습니다.
Response.BinaryWrite cc '브라우저에 바이너리 출력
MyJpeg.Save(대상 파일)
aa = 아무것도 설정하지 않음
setbb=아무것도 없음
setcc=아무것도 없음
JPEG.닫기
MyJpeg.닫기
로고.닫기
종료 조건
'워터마크 추가
%>