프로그래밍/실버라이트

[실버라이트] 로컬 이미지 파일 미리 보기

쿠샨 2011. 2. 15. 17:47


로컬 파일에 대한 Access 권한 때문에 Image 객체에 Source 셋팅 시

Image temp_img = new Image();
temp_img.Source = "C:/temp.png";

이렇게는 접근을 할 수가 없다.

OpenFileDialog 를 통해서 파일을 읽어 온다 하더라도
Select 한 파일의 FullName을 얻을 려고 할 경우 Security Exception이 발생 할 것이다.
즉, 로컬 파일에 대한 Access는 불가능 하다는 것이다.
해결 방법 이라면, Active X 이용 이라던지, OOB 를 이용 하는 것인데, OOB 이용으로 권한 상승을 시켜준다 해도, 제한적으로만 접근이 가능 하다.^^(My Document 폴더 아래로만...가능)

그렇 다면, 파일 업로드 전에 선택한 이미지 파일의 미리 보기를 구현 하고 싶은데 어떻게 해야 할까?

정답은 바로 Stream 을 이용하는 것이다.

FileInfo temp = (FileInfo)e.SelectedFiles[i].File;

Stream stream = temp.OpenRead();

Image temp_img = new Image();
temp_img.Width = 50;
temp_img.Height = 50;
BitmapImage bitmap_img = new BitmapImage();
bitmap_img.SetSource(stream);
temp_img.Source = bitmap_img;
stream.Close();

OpenFileDialog로 선택한 파일을 OpenRead() 메쏘드로 읽어 BitmapImage 를 셋팅 한다.
셋팅 된 BitmapImage 를 Image 객체에 셋팅 하면 끝.^^

위의 예제는 유료 컨트롤을 사용한 것이라 그대로 갖다 붙이면 에러~~~뜹니다.

안된다고 주저 앉지 말고, ㄱㄱ!!