본문 바로가기

Silverlight

충격 딥줌 컴포져 새버전(11월 24일자) - Seadragon Ajax, API




딥줌 컴포져의 새버전이 나왔군요..

해당 버전은 아래의 경로에서 받으실 수 있고요.

http://xpression2.members.winisp.net/DZC/Deep%20Zoom%20Composer.msi


이번 버전은 혁신적인 일이 두가지가 있었어요..

두가지 내용 꼭 챙기시는게 좋을듯해요..

1. 이제는 딥줌을 Ajax 로.. SeaDragon Ajax

딥줌이 SeaDragon 프로젝트의 일환으로 나온건 다 아실거예요.( http://livelabs.com/seadragon/ )

문제는 기존까지는 실버라이트가 없으면 딥줌기능을 사용할 수가 없었는데요.

이제는 Seadragon Ajax 가 생기면서 실버라이트 없이도 딥줌기능을 사용할 수가 있게 되었어요.

(정확히는 딥줌은 실버라이트에서 쓰는 용어이고

ajax 버전은 딥줌이 아니라 Seadragon Ajax 라고 부르는것이 맞습니다.)

몇가지 테스트 결과 문제가 아예 없는것은 아닌데요.

(속도라든지 버그라든지 퍼가기 문제라든지)

그래도 첫 릴리즈에서 이정도의 완성도면 앞으로의 발전가능성을 생각해볼 수 있을듯해요.

제가 테스트로 올려놓은 곳이 있으니 아래의 링크를 클릭하여 확인해보세요.

위에 것이 이번에 새로 나온 SeaDragon Ajax 이고

아래의 것이 실버라이트 딥줌입니다.

http://lab.doubleguy.com/seadragonajax.html




2. 드디어 나온 Composer API

개발자분들중에 이것 기다리시는 분들 많으시죠 ^^;

사실 클래스들을 보면 다소 실망스러운 감이 없지 않아 있지만 그래도 이게 어디에요 ^^;


익스프레션 블로그에도 올라와있지만

SparseImageTool 과 ImageTool 을 커맨드라인이 아닌

프로그래밍적으로 다룰 수 있다는 정도의 의미가 있는것 같아요.

그 이상도 이하의 의미도 아닌것 같군요.

(심지어 이벤트같은것도 없고 말이죠.

커맨드라인 툴을 프로그래밍적으로 좀 더 안정적으로 돌리는것으로 생각하시는것이

좋을듯하군요)

간단히 샘플을 만들어봤는데요.

우선 컴포져 디렉토리에 DeepZoomTools.dll 을 참조에 추가하시고요.


네임 스페이스로 Microsoft.DeepZoomTools 를 추가하시고 사용하시면 되요.

테스트로 사용한 소스는 다음과 같아요.

텍스트로 붙이면 색깔이 안먹어서 이미지하고 소스로 나눠서 붙입니다.

테스트로 프로그램 작성해보실분은 카피 & 페이스트하세요 ^^


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.IO;
using Microsoft.DeepZoomTools;

namespace ComposerLibTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Image imgSource = new Image(@"c:\cap pic\2008-07-31_1602.png"); // 이미지 소스지정
            Collection<Image> iImageCollection = new Collection<Image>();   // 이미지 컬렉션 객체 생성
            iImageCollection.Add(imgSource);                                // 이미지 컬렉션 추가
            SparseImageCreator sic = new SparseImageCreator();              // SparseImageCreator 객체 생성
            sic.ImageQuality = 0.95;                                        // 이미지 퀄리티 설정 0부터 1까지의 값
            sic.TileSize = 256;                                             // 타일 사이즈 지정
            sic.TileOverlap = 1;                                            // 타일과 타일 사이에 오버랩되는 픽셀값지정
            sic.Create(iImageCollection, @"c:\devel\test\testoutput");      // 결과물이 출력된 디렉토리           
        }
    }
}

결과물이 아주 예쁘게 나오는군요 ^^;




3. Composer API 와 더블가이의 HDImgeServer
 

제가 다니는 더블가이라는 회사는 딥줌컴포져의 서버버전을 만들고 판매하는 업체인데요.

저희 회사 이사님이 해당 DLL 때문에 걱정을 하시더라고요.

하지만 개인적으로는 그렇게 크게 염려할 필요는 없을것 같아요..

그 이유는 몇가지가 있는데요.

첫째는 속도 문제예요.

컴포져 자체가 서버환경에 최적화되어 만들어진것이 아니기 때문에

아무리 dll 이 나왔다하더라도 그것은 결국

기존 컴포져를 자동화시켜주는 것밖에 안된다는거죠.

실제 단일 파일을 가지고 테스트 해본 결과 저희 서버가 컴포져 라이브러리보다 훨씬 빠르더군요.


실제 저희는 다중처리 환경에 최적화되어 있기 때문에

파일 하나만 가지고 처리할때 이정도 속도차이라면

파일이 여러개가 무차별적으로 들어오는 환경에서는

차이가 더 심하게 날것 같군요


둘째는 안정성 문제예요

비록 해당 DLL 이 있기는 하지만

결국 그것은 컴포져 프로그램의 중간다리역할을 해주기 때문에

컴포저 자체가 불안할경우 ( 아직 정식버전이 아니므로 )

해당 DLL 을 사용하는 프로그램의 경우도

안정성을 추구하기 어렵게 되죠.

실제 저희는 saytopic 이라는 사이트에서 HDImageServer 를 돌리고 있는데요.

uptime 으로 확인해보니 85일이 되었네요.

85일 동안 한번도 불안정해지거나 죽거나 한적은 없었어요.



셋째는 컴포져에는 없는 기능들이에요

실제 저희는 HD Image Server 2.5 버전을 만들고 있고요

이 버전은 Computer Vision 이라는 분야의 기술이 접목된 것이에요

즉 인공지능으로 사진을 인식하는 기능이죠.

또 한가지는 사진에는 원래 파일을 통해 얻어낼 수 있는 여러가지 메타 정도들이 있어요.

현재 240 개정도의 정보들을 추출하여 독자적으로 만든 파일에 집어넣었고요.

윈도우즈용 서버에 집중하기로 정책이 결정되면서

윈도우만이 가지고 있는 메타정보 12개정도를 더 추가할 예정이에요

이런 내용들은 컴포져에는 없는 기능들이죠.

뭐 물론 컴포져와 HD Image Server 가 가는 길은 다르다고 생각하니까

당연하기도 하겠죠.

==================================================================

결론적으로 말씀드리면

이번에 나온 컴포져는 상당한 의미가 있었어요.

딥줌 기능을 실버라이트 외의 환경에서 제공하는것은

시사적인 의미가 있다고 보고요.

프로그램적으로 딥줌 컴포져를 자동화하는 것도 의미가 있다고 봐요..


아래는 참고 사이트입니다.


Deep Zoom Composer Updated: Seadragon Ajax Support, New API, and more! (http://blogs.msdn.com/expression/archive/2008/11/24/deep-zoom-composer-updated-seajax-support-new-api-and-more.aspx)


Seadragon AJAX and Deep Zoom  (http://blogs.msdn.com/lutzg/archive/2008/11/23/seadragon-ajax-and-deep-zoom.aspx)


[출처] 이과장의 프로그래밍이야기