PhotoServer 5

> 포토서버

예제 보기

썸네일 명령

원본 비율을 유지하면서 가로 크기가 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
                    

웹 페이지에 플래시 또는 자바스크립트를 통한 동적 랜더링 코드가 포함되어 있는 웹 페이지도 캡처할 수 있습니다. 웹 페이지 로딩이 끝난 후 동적 컨텐츠가 실행될 수 있는 대기 시간을 제공하고 그 시간 후 랜더링된 웹 페이지 모습을 그대로 이미지에 담을 수 있습니다. 마치 사진을 찍는 것과 동일한 방식으로 웹 화면을 디지털 이미지화 하는 것입니다.