使用Openseadragon在大型图像上使用IE 11 / Edge获得'IndexSizeError'

时间:2018-06-28 15:00:24

标签: javascript internet-explorer html5-canvas microsoft-edge openseadragon

我正在使用Openseadragon来显示大图像,并且在其中一些图像中,我收到了带有IE 11和Edge的“ SCRIPT5022:IndexSizeError”错误消息。

它适用于较小的图像(1024 x 656像素),但不适用于较大的图像(例如2981 x 4123)。任何其他浏览器在任何情况下都可以正常工作。

我正在使用“旧版图像金字塔”类型的源。

我的Openseadragon配置:

viewer = OpenSeadragon({
id:                   'openseadragon',
toolbar:              'viewer-toolbar',
maxZoomLevel:         5,
minZoomLevel:         0,
preload:              true,
sequenceMode:         false,
tileSources:          SOURCE,
crossOriginPolicy:    'Anonymous',
// buttons
zoomInButton:         'zoom-in',
zoomOutButton:        'zoom-out',
showRotationControl:  true,
rotateLeftButton:     'rotate-left',
rotateRightButton:    'rotate-right',
homeButton:           'home',
showFullPageControl:  false,
rotateleftButton:     'rotate-left',
rotaterightButton:    'rotate-right',
// gestures
gestureSettingsMouse:   {
  clickToZoom:        false,
  dblClickToZoom:     true,
  pinchToZoom:        true,
  pinchRotate:        true
},
gestureSettingsTouch: { pinchRotate: true }
});

大型图片的源代码(失败):

var SOURCE = [
    {
      type: 'legacy-image-pyramid',
      levels: [{
        url: 'https://rgw.atolcd.com/swift/v1/sillon_container_test/entrepot/B574636101_Prev36_18930411_0001.jpg',
        height: 4123,
        width: 2981
      }]
    }
];

较小图像(工作)的源代码:

var SOURCE = [
    {
      type: 'legacy-image-pyramid',
      levels: [{
        url: 'https://rgw.atolcd.com/swift/v1/sillon_container_test/entrepot/carte1.jpg',
        height: 656,
        width: 1024
      }]
    },
  ];

我发现了这个问题(如果drawImage参数错误,则使用IE11 / Edge(显然是在Edge的最新版本中得到了修复)的https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/16192680/IndexSizeError on drawImage on IE and Edge,但是OpenSeadragon的值很好。图片,所以它应该适用于任何图片?)。

我尝试了另一种源类型(图像图块源),但存在相同的错误。

如果我禁用画布并改用img(在选项中为useCanvas:false),则可以使用,但这对我来说不是解决方案(破坏了我的查看器实现)。

0 个答案:

没有答案