如何在Python中通过IIIFv21 API获取高质量图像切片?
IIIF v2.1 图像切片获取问题解决指南
问题背景
我持有一份IIIF v2.1格式的info.json文件,希望通过它获取高质量图像切片,但按照规范尝试多次仍失败。示例info.json内容如下:
{ "@context" : "http://iiif.io/api/image/2/context.json", "@id" : "https://iiif.nli.org.il/IIIFv21/FL202979482", "protocol" : "http://iiif.io/api/image", "width" : 5414, "height" : 3763, "sizes" : [ { "width" : 84, "height" : 58 }, { "width" : 169, "height" : 117 }, { "width" : 338, "height" : 235 }, { "width" : 676, "height" : 470 }, { "width" : 1353, "height" : 940 }, { "width" : 2707, "height" : 1881 } ], "tiles" : [ { "width" : 1024, "height" : 1024, "scaleFactors" : [ 1, 2, 4, 8, 16, 32, 64 ] } ], "profile" : [ "http://iiif.io/api/image/2/level1.json", { "formats" : [ "jpg" ], "qualities" : [ "native", "color", "gray", "bitonal" ], "supports" : [ "regionByPct", "regionSquare", "sizeByForcedWh", "sizeByWh", "sizeAboveFull", "rotationBy90s", "mirroring" ], "maxWidth" : 526, "maxHeight" : 526, "maxArea" : 111111 } ], "rights" : "http://web.nli.org.il/sites/NLI/Hebrew/library/items-terms-of-use/Pages/nli-copying-prohibited.aspx" }
之前尝试的错误链接(左上角切片)包括:
https://iiif.nli.org.il/IIIFv21/FL202979451/0,0,1024,1024/1024,/0/default.jpghttps://iiif.nli.org.il/IIIFv21/FL202979451/0,0,1024,1024/1024,1024/0/default.jpghttps://iiif.nli.org.il/IIIFv21/FL202979451/0,0/1024,1024/0/default.jpghttps://iiif.nli.org.il/IIIFv21/FL202979451/0/0,0,1024,1024/1024,/0/default.jpghttps://iiif.nli.org.il/IIIFv21/FL202979451/0/0,0,1024,1024/1024,1024/0/default.jpghttps://iiif.nli.org.il/IIIFv21/FL202979451/0/0,0/1024,1024/0/default.jpg
失败原因分析
- 图像ID不匹配:所有尝试使用的
FL202979451与info.json中@id字段的FL202979482不一致,导致请求指向不存在的资源。 - 尺寸超出限制:info.json的
profile部分明确规定了单张图像的maxWidth/maxHeight为526,maxArea为111111,而请求中使用的1024尺寸远超过该限制,服务端会拒绝此类请求。 - 请求格式错误:部分链接使用了无效的
region参数格式(如0,0),或添加了多余的路径层级(如/0/),不符合IIIF v2.1的规范结构。
正确的请求示例
IIIF v2.1的图像请求格式为:{基础URI}/{region}/{size}/{rotation}/{quality}.{format}
结合info.json的限制,正确的左上角切片请求链接示例(使用符合限制的尺寸):https://iiif.nli.org.il/IIIFv21/FL202979482/0,0,333,333/333,333/0/default.jpg
参数说明
- 基础URI:必须与info.json中的
@id完全一致,即https://iiif.nli.org.il/IIIFv21/FL202979482 - region:采用
x,y,w,h格式,0,0,333,333表示从左上角(0,0)开始,截取宽333、高333的区域(该尺寸的面积为110889,未超过maxArea限制) - size:
333,333表示将截取的区域缩放到333x333的尺寸,符合maxWidth/maxHeight要求 - rotation:
0表示不旋转图像 - quality:
default对应info.json中支持的图像质量类型 - format:
jpg是info.json中唯一支持的图像格式
扩展说明
如果需要获取更大范围的切片,可以通过多次请求不同区域的小尺寸图像,再拼接成完整区域;也可以使用scaleFactors参数对应的缩放级别,获取低分辨率的完整图像后再局部放大。
内容的提问来源于stack exchange,提问作者Yanirmr
相关产品推荐
相关产品推荐

