2011-03-02 2 views
2

실제로 피라미드의 다른 레이어 (deepzoom 작곡가가 제작 한 이미지)에서 이미지 (타일)를 생성하기 위해 자체 코드를 사용합니다. 가능한지 알고 싶습니다. 그것들을 실버 라이트에 넣으시겠습니까? 대개 그물에 나는 이것과 그러므로 질문을 위해 깊은 줌 작곡가에서 수출 된 이미지를 보았습니다.Silverlight를 사용하여 DeepZoom에서 자신의 기가 픽셀 이미지 표시

답변

1

하나의 큰 이미지의 경우 이미 피라미드 세트의 이미지 타일 이미지가있는 경우 비교적 간단합니다.

는 XML

이 자신에게 큰 된 이미지의 설정 (그냥 전화를 할 수 있습니다이 예를 들어 "콘텐츠")를 포함하는 (ClientBin에서 보통) 하위 폴더를 만듭니다. 이 폴더에 deepzoom 이미지를 설명하는 Xml 파일을 만듭니다.이 예제의 경우 "MyLargeImage1.xml"입니다. 이 다음 XML을 사용 : -

<?xml version="1.0" encoding="utf-8"?> 
<Image TileSize="256" Overlap="1" Format="jpg" xmlns="http://schemas.microsoft.com/deepzoom/2008"> 
    <Size Width="40000" Height="30000" /> 
</Image> 

참고는 TileSize 속성은 사용한 타일의 측면 길이를 나타냅니다. 따라서 피라미드를 만들 때 다른 타일 크기를 사용했다면이 값을 조정해야합니다. 참고로 Overlap은 각 타일이 겹칠 수있는 픽셀 수를 나타냅니다. 타일링에 겹침을 사용하지 않은 경우이 값을 0으로 설정하십시오.

Size 요소의 실제 픽셀 크기를 지정하십시오.

지금이 XML 파일과 같은 폴더에있는 이미지

파일는 동일한 제목과하지만 접미사 "_files"로 폴더를 만듭니다. 이 경우 "MyLargeImage1_files"라는 폴더가 있습니다. 이 폴더에는 피라미드 레이어를 나타내는 일련의 하위 폴더가 있습니다.

Gigapixel 이미지의 경우 (위의 치수와 같이) "0"에서 "16"까지 17 개의 폴더가 있습니다. 네이티브 해상도로 그러한 이미지를 보려면 레벨 16까지 내려야하기 때문에.

각 폴더에는 피라미드에서이 레이어를 구성하는 타일 집합이 포함됩니다. 이것들은 "x_y"형식의 파일 제목을 갖는 .jpg 파일입니다. 여기서 x와 y는 x 축과 y 축에서의 서수 위치이며 0_0은 왼쪽 상단 타일입니다.

이 예제에서 "8"까지의 모든 폴더에는 0_0.jpg 파일이 하나만 포함됩니다. 레벨 8 이상이면 Xml에 지정된 단일 타일의 256 자보다 큰 이미지를 찾을 수 있기 때문입니다. 물론 다른 타일 크기를 사용했다면 이것은 다를 것입니다.

레벨이 "16"이면 0_0.jpg부터 156_117.jpg까지의 모든 파일이있을 것으로 예상됩니다 (18526 개의 파일은 단일 폴더의 파일입니다).

XAML

마지막으로 실제로는 MultiScaleImage 컨트롤을 사용하여 XML 파일에 소스 속성을 가리키는 이미지를 표시하기 : - 나는 당신이 말한 것과 매우 유사한 물건을 시도

<MultiScaleImage Source="/Content/MyLargeImage1.xml" /> 
+0

. 그러나 만약 내가 내 자신의 XML을 만들면 그것은 아무것도 laod 것 같습니다. 이전 버전 중 하나에서 XML을 복사하는 경우 (실제로는 이전 이미지 에서이 새로운 이미지를 겹쳐) 작동하는 것 같습니다.내 요점은 소스에서 내 폴더 중 아무도이 오래된 이미지를 브라우저에서 표시하지 않는 경우입니다. 내 두 번째 접근 방식은 기본적으로 내가 일할 수있는 처음부터 쓰여진 XML을 얻을 수 없다는 사실에서 비롯됩니다. – Manish

+0

@Manish : http://www.fiddler2.com/의 복사본을 구해서 자신의 XML을 사용할 때 Silverlight에서 오는 요청을 모니터링하십시오. URL은 ClientBin 폴더와 관련이 있습니다 (예 :/= ClientBin 폴더 자체. – AnthonyWJones

관련 문제