翻译者:宋杰
原文地址:https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/
用例
这个专题应该和单一视图中的多个图像选择以及折页、封页和地图一起考虑。它们都涉及到以某种方式与对象的同一部分相关的多个图像,但不同的建模方法有不同的目的,应该在客户端应用程序中产生不同的用户界面选项。
这个专题是关于从多个内容资源,如多个图像、基于时间的媒体或媒体格式的组合,组成一个单一的视图。内容注释的动机 motivation 是绘画 painting ,但这里有多个资源要一起画到Canvas上。
单一视图中的图像多重选择的例子是为同一视图提供备选的内容资源,而目前的专题不是为用户提供选择。向用户提供对画布上的哪些内容资源可见的控制可能没有意义;发布者的意图是说,所有这些资源构成了场景,按照提供的顺序组合在画布上。
考虑一个有持续时间的画布,它包含图像、视频和音频,在时间轴的不同点显示在场景的不同部分。虽然对可见性的控制在复杂的IIIF客户端中可能是有用的,但出版商的意图不是提供这种控制,而是从独立的内容资源中建立场景。
另一个IIIF的例子是手稿的数字重组。在逐页的层面上,这可以通过组装一个引用不同机构的Canvases的清单来实现,或者铸造新的Canvases,每个单独引用一个图像。
数字化重组也可以发生在Canvas内部,就像我们熟悉的Châteauroux的例子。我们有手稿页,缺少示图:
这是示图本身
我们希望从这两个来源产生一个综合的视图:
对于Canvas上的多张图片,该模型表示所有这些内容都属于Canvas。它对顺序是有意见的,这对针对 Canvas 空间范围的资源(图像和视频)来说很重要,因为它们可能会相互重叠。资源会按照清单中提供的顺序在画布上往上组合。这就像CSS中的Z-index一样。
多样化的资源与选择
这个例子也可以实现为 “选择”,就像在一个单一的视图中对图片进行多重选择。然而,这将要求客户端(观看者)提供用户界面来进行选择。最简单的客户端将只是从所提供的资源中组装场景,而不需要用户做出决定或进行额外的交互。
在这个例子中,能够独立地查看两个图像资源是有好处的,而且一个复杂的客户端仍然可以通过增强的图层控制向用户提供这种选择,尽管这些资源是作为场景的复合部分提供的。
查看器的实现在默认情况下应该在正确的位置和正确的时间集合并显示Canvas上提供的所有内容。对于许多Canvas,尤其是那些涉及到基于时间的媒体,任何不是对所提供的内容进行完全确定的渲染的实现都是与发布者的意图相违背的,或者需要客户对该意图有更多的了解。
实施说明
图像的呈现方式是从第一个绘画注解遇到的所有后续绘画注解的Z-索引中向上。因此,在第一个注释中,300像素的小方块图像被画在1800x1200的大图像上面,而不是相反。
当从多个图像组成一个场景时,一些图像需要在Canvas上定位,以便它们彼此对齐。在这种情况下,较小的图像应在画布上定位,使其与较大图像的缺失区域对齐。使用 [Fragment Selector][0020] 来指定画布上应绘制图像的目标区域。
例子
一个有单一画布的清单,上面画有两个图像。一张是整个对象的图像,一张是填补第一张图像中缺少的细节。请注意,第二幅图像的目标属性(第69行)附加了坐标,以便将图像定位在Canvas的适当区域。
注意:目前,Mirador 3仅部分支持在单个Canvas上分层显示多个图像,在这个用例中尤其值得注意。以前的Mirador迭代从第一个绘画注释开始向上处理图像,而Mirador 3则是反向处理。这意味着第二张图片(缺失的插图细节)被隐藏在整个对开页的图片后面,用户无法查看重建的场景。
JSON-LD | 在Mirador中查看
{
"@context": "http://iiif.io/api/presentation/3/context.json",
"id": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/manifest.json",
"type": "Manifest",
"label": {
"en": [
"Folio from Grandes Chroniques de France, ca. 1460"
]
},
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/canvas/p1",
"type": "Canvas",
"label": {
"none": [
"f. 033v-034r [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]"
]
},
"height": 5412,
"width": 7216,
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/page/p1/1",
"type": "AnnotationPage",
"items": [
{
"id": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/annotation/p0001-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux/full/max/0/default.jpg",
"type": "Image",
"format": "image/jpeg",
"height": 5412,
"width": 7216,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux",
"type": "ImageService3",
"profile": "level1"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/canvas/p1"
},
{
"id": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/annotation/p0002-image",
"type": "Annotation",
"motivation": "painting",
"body": {
"id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature/full/max/0/native.jpg",
"type": "Image",
"format": "image/jpeg",
"label": {
"fr": [
"Miniature [Chilpéric Ier tue Galswinthe, se remarie et est assassiné]"
]
},
"width": 2138,
"height": 2414,
"service": [
{
"id": "https://iiif.io/api/image/3.0/example/reference/899da506920824588764bc12b10fc800-bnf_chateauroux_miniature",
"type": "ImageService1",
"profile": "level2"
}
]
},
"target": "https://iiif.io/api/cookbook/recipe/0036-composition-from-multiple-images/canvas/p1#xywh=3949,994,1091,1232"
}
]
}
]
}
]
}
相关专题
- 在一个视图中可选择多种图像
- 折页、翻页和地图
- [片断选择器][0020]