썸네일 명령
원본 비율을 유지하면서 가로 크기가 150 픽셀인 썸네일을 생성합니다.
Chrysanthemum.jpg?cmd=thumb&width=150
원본 이미지가 150x150 크기의 이미지에 자동으로 맞추도록 썸네일을 생성합니다.
Chrysanthemum.jpg?cmd=thumb&width=150&height=150&fit=true&bgcolor=999999
여백없이 150x150 크기의 이미지에 원본 이미지를 가득 채우도록 자른 후 썸네일 합니다.
Chrysanthemum.jpg?cmd=thumb&width=150&height=150&fit=true&ws=false
액자 명령
원본 이미지에 frame10 액자를 씌웁니다.
Maple.jpg?cmd=frame&name=frame10
합성 명령
로고 이미지를 이미지 가운데 위치에 합성합니다.
Penguins.jpg?cmd=merge&file=tabslab.png&align=center&valign=middle&alhpa=255
텍스트 출력 명령
이미지에 가운데 정렬로 문자열을 출력합니다.
Tulips.jpg?cmd=text&font=Times+New+Roman&fontsize=30&color=666666& x=10&y=10&w=420&h=200&text=This+is+an+example+for+drawing+text%2E&wrap=true&align=1
사용자 정의 명령
사용자 정의 명령은 포토서버가 제공하는 기본 명령을 재정의 및 조합해 새로 생성한 명령입니다.
일반 명령과 레이어 명령을 조합해 포토샵과 같은 전문 이미지 툴에서 제공하는 효과를 구현할 수 있습니다.
다음은 여러 가지 포토 명령을 조합해 오래된 사진 효과를 구현한 예제입니다.
오래된 사진
ucOld.pscmd
; 바탕 이미지를 복사해서 흑백 이미지 레이어를 생성합니다.
cmd=layercopy&from=background&name=graylayer
; 흑백 이미지로 변경합니다.
cmd=gray&layer=graylayer
; 세피아 계열 색상으로 처리된 세피아 레이어를 생성합니다.
cmd=layernew&name=sepialayer&bgcolor=fff5d5
; 흑백 이미지 위에 세피아 레이어를 Color 모드로 합성합니다.
cmd=layerblend&from=sepialayer&to=graylayer&method=color&a=140
; 구겨진 이미지를 바탕 이미지에 출력합니다.
cmd=merge&layer=background&file=oldpaper-1.jpg&fit=true
; 바탕 이미지에 흑백 이미지를 Screen 모드로 합성합니다.
cmd=layerblend&from=graylayer&to=background&method=screen&a=255
; 흑백 이미지를 한 번 더 Overlay 모드로 합성합니다.
; - 보다 강한 윤곽을 출력하는 목적으로 선택적인 처리입니다.
cmd=layerblend&from=graylayer&to=background&method=overlay&a=128
Lighthouse.jpg?cmd=ucOld
이미지 처리 API
각종 프로그래밍 환경에서 사용할 수 있는 포토서버 API가 제공됩니다.
다양한 API를 사용해 기본적인 이미지 처리를 할 수 있으며 포토 명령을 직접 호출할 수 있는 기능도 제공됩니다.
포토서버 API는 COM 오브젝트 형태와 .NET 클래스 라이브러리, 자바 클래스 패키지 형태로 제공되므로 ASP, ASP.NET, JSP와 같은
웹 애플리케이션 개발 환경에서 사용할 수 있으며 C++, 델파이, Java와 같은 애플리케이션 개발 환경에서도 사용할 수 있습니다.
다음은 원본 이미지와 로고 이미지를 읽어 원본의 가운데에 로그 이미지를 합성하는 ASP/VBscript 예제입니다.
Set ps5conn = Server.CreateObject("PhotoServer5.Connection")
'포토서버와 연결합니다.
If ps5conn.Connect("localhost", 19985, 10) = 0 Then
Set img = ps5conn.CreateImage()
Set imgLogo = ps5conn.CreateImage()
'원본 이미지와 로고 이미지를 로딩합니다.
If img.Load("C:\images\sample.jpg") = 0 And imgLogo.Load("C:\images\logo.png") = 0 Then
'원본 이미지 가운데에 로고 이미지를 합성합니다.
img.Merge imgLogo, 0, 0, 128, "center", "middle"
'결과 이미지를 저장합니다.
img.Save "C:\images\result.jpg"
End If
ps5conn.Close
End If
다음은 동일한 동작을 하는 ASP.NET/C# 예제입니다.
using TABS.PhotoServer5;
Ps5Connection ps5conn = new Ps5Connection();
// 포토서버와 연결합니다.
if (ps5conn.Connect("localhost", 19985, 10) == 0)
{
Ps5Image img = ps5conn.CreateImage();
Ps5Image imgLogo = ps5conn.CreateImage();
// 원본 이미지와 로고 이미지를 로딩합니다.
if (img.Load(@"C:\images\sample.jpg") == 0 && imgLogo.Load(@"C:\images\logo.png") = 0)
{
// 원본 이미지 가운데에 로고 이미지를 합성합니다.
img.Merge(imgLogo, 0, 0, 128, "center", "middle");
// 결과 이미지를 저장합니다.
img.Save(@"C:\images\reslut.jpg");
}
ps5conn.Close();
}
다음은 동일한 동작을 하는 Java 예제입니다.
import tabs.photoserver5.*;
Ps5Connection ps5conn = new Ps5Connection();
// 포토서버와 연결합니다.
if (ps5conn.Connect("localhost", 19985, 10) == 0)
{
Ps5Image img = ps5conn.CreateImage();
Ps5Image imgLogo = ps5conn.CreateImage();
// 원본 이미지와 로고 이미지를 로딩합니다.
if (img.Load("C:\\images\\sample.jpg") == 0 && imgLogo.Load("C:\\images\\logo.png") = 0)
{
// 원본 이미지 가운데에 로고 이미지를 합성합니다.
img.Merge(imgLogo, 0, 0, 128, "center", "middle");
// 결과 이미지를 저장합니다.
img.Save("C:\\images\\result.jpg");
}
ps5conn.Close();
}
웹 캡처 API
포토서버는 지정된 URL을 웹 브라우저에서 보는 것과 동일하게 캡처해서 이미지 파일로 저장하는 기능을 제공합니다.
웹 캡처는 이미지 프로그래밍 API를 사용해 동작시킬 수 있으며 캡처 된 이미지에 대해 포토 명령 프로그래밍을 사용해 다양한 이미지 후처리를 진행할 수 있습니다.
다음은 http://www.tabslab.com 사이트 화면을 캡처한 후 crop 명령으로 잘라내는 예제입니다.
Set ps5conn = CreateObject("PhotoServer5.Connection")
'포토서버와 연결합니다.
retCode = ps5conn.Connect("localhost", 19985, 10)
If retCode = 0 Then
Set img = ps5conn.CreateImage()
'URL에 지정된 페이지를 로딩해 이미지로 캡처합니다.
If img.LoadFromCaptureUrl("http://www.tabslab.com", "") = 0 Then
'crop 명령을 사용해 필요한 부분을 잘라냅니다.
img.RunCommand("cmd=crop&x=100&y=100&width=0&height=0")
'결과 이미지를 저장합니다.
img.Save "C:\images\capture.jpg"
End If
img.Close
ps5conn.Close
End If
웹 페이지에 플래시 또는 자바스크립트를 통한 동적 랜더링 코드가 포함되어 있는 웹 페이지도 캡처할 수 있습니다.
웹 페이지 로딩이 끝난 후 동적 컨텐츠가 실행될 수 있는 대기 시간을 제공하고 그 시간 후 랜더링된 웹 페이지 모습을 그대로 이미지에 담을 수 있습니다.
마치 사진을 찍는 것과 동일한 방식으로 웹 화면을 디지털 이미지화 하는 것입니다.