翻译者:syl
原文地址:https://iiif.io/api/cookbook/recipe/0009-book-1/
用例
你有一本由多个图像序列组成的数字化书籍,并想把它建模为一个IIIF清单。这个专题涉及到一个书(codex)对象,但实际上它适用于任何一种可能由一系列页面、表面或视图组成的复合对象(像下面的例子中的现代印刷书的页面,明信片的两面或雕像的四面视图)。
实施说明
下面的清单样本代表了一本印刷书的一部分的数字代用品,从正面插图和标题页开始。它包含五个画布,每个画布都被一页的全尺寸图像填充。在这种情况下,我们每页有一个视图,但根据对象的类型和它被数字化的方式,你也可以在每个双页上有一个视图或每面有一个视图。
由于这个清单是用来呈现一本印刷书的,所以它behaviour值是paged,从而表明它可以以翻页的界面来呈现。但是,根据预期的用户体验和物理对象及其数字代用品的性质,你可以使用其他提示来告诉用户适当的呈现顺序和布局行为。Presentation 3.0规范定义了的behaviour其他值(另见书籍行为变化专题)和一个viewingDirection属性(另见查看方向及其对导航的影响专题),它们都会影响对象在浏览界面的呈现。
清单的items属性包含Canvas的列表,代表构成数字对象的有序视图序列。每个Canvas都传达了该视图的正确长宽比,不管它是什么。对于一本书来说,最常见的情况是每页有一个视图,因此每个Canvas有一个图像。
建议使用 Canvas 上的label属性。它是给定视图的人类可读标签,允许用户区分不同的图像。它通常给出页数或对开页数,或任何其他适当的术语来识别对象中的特定视图。标签属性可以完全国际化(参见《多语言文本》)。
你还应该考虑为每个Canvas提供一个缩略图,这样客户端就可以有效地呈现网格视图或缩略图条,从而帮助用户在对象中进行导航。这是一个普遍的良好做法,如果你不为你的图像提供IIIF图像API服务,则特别建议你这样做。
实例
JSON-LD | View in Universal Viewer | View in Mirador
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/manifest.json",
"type": "Manifest",
"label": {
"en": [
"Simple Manifest - Book"
]
},
"behavior": [
"paged"
],
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p1",
"type": "Canvas",
"label": {
"en": [
"Blank page"
]
},
"height": 4613,
"width": 3204,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/page/p1/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/annotation/p0001-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"height": 4613,
"width": 3204,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f18",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p1"
}
]
}
]
},
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p2",
"type": "Canvas",
"label": {
"en": [
"Frontispiece"
]
},
"width": 3186,
"height": 4612,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/page/p2/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/annotation/p0002-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3186,
"height": 4612,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f19",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p2"
}
]
}
]
},
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p3",
"type": "Canvas",
"label": {
"en": [
"Title page"
]
},
"width": 3204,
"height": 4613,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/page/p3/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/annotation/p0003-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3204,
"height": 4613,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f20",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p3"
}
]
}
]
},
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p4",
"type": "Canvas",
"label": {
"en": [
"Blank page"
]
},
"width": 3174,
"height": 4578,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/page/p4/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/annotation/p0004-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3174,
"height": 4578,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f21",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p4"
}
]
}
]
},
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p5",
"type": "Canvas",
"label": {
"en": [
"Bookplate"
]
},
"width": 3198,
"height": 4632,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/page/p5/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0009-book-1/annotation/p0005-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"width": 3198,
"height": 4632,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/59d09e6773341f28ea166e9f3c1e674f-gallica_ark_12148_bpt6k1526005v_f22",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0009-book-1/canvas/p5"
}
]
}
]
}
]
}