2016-07-28 11 views
1

나는 openseadragon을 사용하여 피라미드 (DZI)를 표시하고 있습니다.openseadragon : 특정 타일 업데이트

런타임시 고해상도 이미지가 생성되고 고해상도 이미지 작성 프로세스 중에 OSD 뷰어를 업데이트해야합니다.

빈 화면 (흰색 이미지)으로 DZI hirarcy를 초기화합니다. 그런 다음 고해상도 이미지를 만드는 동안 빈 이미지를 새 이미지로 교체합니다 (서버에서).

필요에 따라 특정 타일을 어떻게 업데이트 할 수 있습니까? 서버는 클라이언트에게 "raedy"인 타일에 대한 정보를 보낼 수 있습니다 (실제 이미지 포함).

답변

0

단색에서 이미지로 희미 해지고 싶습니까? 이 효과를 얻기 위해 이미지 불투명도를 애니메이션으로 만들면 더 쉬울 것입니다.

이미지 타일을 엉망으로 만들고 싶다면 캔버스 렌더러 (IE8을 제외하고는 기본적으로 사용되는)를 사용한다고 가정하면 개별 타일에 액세스 할 수 있으며 tile.cacheImageRecord.getRenderedContext()을 사용하여 데이터를 보유하는 캔버스의 컨텍스트를 가져옵니다. 그러면 네가 원하는대로 할 수있다. 만약 당신이 그것에 들어가면, 들어오는 타일을 필요에 따라로드 할 때 편집 할 수 있도록 뷰어에서 tile-loaded 이벤트를 보길 원할 것입니다.

+0

안녕하세요, 귀하의 답변을 주셔서 감사합니다. 그러나 이미지가 희미 해지는 것에 대해 묻지 않았습니다. 나는 나의 질문을 편집했다, 지금 세부 사항이 더있다. – mira

1

업데이트 된 질문에 감사드립니다. OSD에는 재설정을 위해 특정 타일을 타겟팅 할 수있는 기능이 없지만 추가하는 것이 좋습니다. OSD를로드 한 후에 이것을 넣을 수 있다고 생각합니다.

OpenSeadragon.TileCache.prototype.clearTile = function(tile) { 
    OpenSeadragon.console.assert(tile, '[TileCache.clearTilesFor] tile is required'); 
    var tileRecord; 
    for (var i = 0; i < this._tilesLoaded.length; ++i) { 
     tileRecord = this._tilesLoaded[ i ]; 
     if (tileRecord.tile === tile) { 
      this._unloadTile(tileRecord); 
      this._tilesLoaded.splice(i, 1); 
      return; 
     } 
    } 
}; 

...이 기능을 추가해야합니다.

다른 것은 당신이 처리해야합니다 ... 내가 그 코드를 테스트하지 않았습니다

viewer.tileCache.clearTile(tile); 

,하지만 작동합니다 : 당신은 문제의 타일을 찾아 뭔가를 할 것 두 번째로로드하려고하면 동일한 이미지이기 때문에 타일 자체를 캐시하려는 브라우저입니다. 아마도 브라우저에 이미지를 다시로드해야 할 때마다 헤더를 요구할 수있는 헤더가 있습니다.