블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



[스텝바이스텝 | HOONS닷넷과 함께하는 닷넷 인사이드 포토라이트(PHOTOLIGHT)]

 

실전 실버라이트 프로그래밍,

포토라이트(PHOTOLIGHT) 만들기!

 



Photo Light 파일업로드 구현

 

웹프로젝트에서 WCF파일을 하나 생성하자. 필자의 경우 아래 그림과 같이 FileUploadService PhotoViewService 두개를 만들어 두었다.

사용자 삽입 이미지

[ WCF Service 구성 내용 ]

 

PhotoViewService는 나중에 PhotoLight에서 사용되어 질 서비스이다. 이렇게 서비스 만들었다며

Web.config파일에서 endpoint의 바인딩을 basicHttpBinding로 지정해 주어야 한다. 이유는 실버라이트에서는 basicHttpBinding만을 지원하기 때문이다. 꼭 기억해 두어 나중에 삽질을 피하자!

이제 WCF서비스 코드를 살펴보자.

 

FileUploadService.cs

[OperationContract]

public void SaveFile(FileUploadData file)

{

            provider.SaveFile(file);

}

FileUploadProvider.cs

public void SaveFile(FileUploadData file)

{

            string uploadDir = CreateDirectory(file.GroupName);

            string fname = file.FileName;

 

            if (file.IsFirst)

            {

                if (File.Exists(Path.Combine(uploadDir, fname)))

                    File.Delete(Path.Combine(uploadDir, fname));

            }

 

            FileStream stream = File.Open(Path.Combine(uploadDir, fname), FileMode.Append);

            stream.Write(file.FileData, 0, file.DataLength);

            stream.Close();

 

if (file.IsLast)

            {

                CreateThumbanil(uploadDir, fname, file.GroupName);

                CreateDeepZoomFile(uploadDir, fname, file.GroupName);

            }

}

 

SaveFile메소드는 실버라이트에서 사용될 수 있도록 OperationContract라는 어트리뷰트를 적어주어야 한다. 해당 메소드는 FileUploadProvider클래스의 SaveFile메소드를 호출하고 있다. 실제 파일업로드가 처리되는 메소드는 FileUploadProvider클래스의 SaveFile메소드이다. 코드를 살펴보면 해당 파일정보가 올라오면 지정한 루트폴더에 파일을 저장한다. 그리고 파일이 완전히 다올라 왔는지 IsLast속성을 체크를 해서 파일이 다올라오면 썸네일 이미지와 DeepZoom파일을 생성을 한다.


- Deep Zoom Composer API 활용

업로드된 이미지파일을 딥줌(DeepZoom)파일로 변환하기 위해서는 DeepZoom Composer API를 이용해야 하는데, 이를 사용하기 위해서는 먼저 서버에 DeepZoom Composer를 설치를하고,

DeepZoomTools.dll 를 프로젝트에 참조 추가를 해야한다. 참조를 하게 되면 ImageCreator라는

 함수가 있는데, 이 함수를 이용해서 간단하게 딥줌파일을 생성 할 수 있다.

 

DeepZoomHelper.cs

public void CreateDeepZoomImage()

{

            ImageCreator imgCreator = new ImageCreator();

            imgCreator.ImageQuality = 0.95;

            imgCreator.TileSize = 256;

            imgCreator.TileOverlap = 1;

            imgCreator.Create(ImgageFileName, SavePolder);

}

 

5줄의 코드면 딥줌파일이 생성이 되는 것이다. ImageCreator함수를 생성을 하고, ImageQuality 속성과 TileSize 속성, TileOverlap 속성만 지정해주었다. 이 속성들은 아래와 같다.

 

- ImageQuality 속성을 0에서 1 사이의 값으로 세팅하며, 보통 0.95 정도로 지정한다.

- TileSize 속성은 딥줌파일의 이미지 타일의 크기를 지정한다.

- TileOverlap 속성은 이미지들의 Overlap정도는 지정한다.

 

 Create함수를 통해 딥줌파일을 생성을 하는데, 첫번째 매개변수는 파일명(실제파일의 경로)이며, 두번째 매개변수는 저장되어질 디렉토리경로를 지정하면된다. 

 

이렇게 해서 대략적으로 파일업로드 어플리케이션 동작, 코드구현부분과 WCF서비스에서 처리되는 부분에 대해 알아 봤다. 이제 Photo Light 어플리케이션에 대해 알아 보도록 하자.


Posted by happydong
, |