SlideShare a Scribd company logo
IIIF without an image
server? No problem!
Simeon Warner (Cornell)
https://orcid.org/0000-0002-7970-7855
2017 IIIF Conference, The Vatican
8 June 2017
Who are you?
1. Who has used IIIF in some form already?
2. Who feels they understand the distinction
between the IIIF Image and Presentation
APIs?
3. Who understands the contents of an IIIF
Image API “info.json” file (response to
Image Information Request)?
http://iiif.io/api/image/2.1/
http://iiif.io/api/presentation/2.1/
Punchline: You can use IIIF
applications on images and manifests
that are simply static files on a web-
server
In this talk I will focus on doing this to
support the Image API, support for
manifests and other Presentation API
JSON files is trivial
IIIF Image API “level 0” compliance
Every Image API info.json must have the compliance
level specified in the profile:
Values are defined in the Image API Compliance
document: http://iiif.io/api/image/2.1/compliance/
“level 0” means
Only the following parameter values are supported:
• region=“full” except for tiles generates
according to the tiles values
• size=“full” except for values in sizes or tiles
generated according to the tiles values
• rotation=0
• quality=“default”
• format=“jpg”
But this is enough to pan and zoom.
IIIF Image API to support viewers
• The 90% (or is it 99%?) use-case for the IIIF Image API
is driving tile-based rich pan and zoom viewers
• The most popular IIIF viewers are currently the
Universal Viewer and Mirador
• Both of these viewers are based around the
OpenSeadragon viewer library
• ...so, to support these viewers one needs to cater
for the needs of OpenSeadragon
What does OpenSeadragon need?
[07/Jun/2017 05:32:44] "GET /starfish/info.json HTTP/1.1”
[07/Jun/2017 05:32:44] "GET /starfish/full/375,/0/default.jpg HTTP/1.1”
[07/Jun/2017 05:32:44] "GET /starfish/full/750,/0/default.jpg HTTP/1.1”
[07/Jun/2017 05:33:31] "GET /starfish/0,0,2048,2048/1024,/0/default.jpg
HTTP/1.1”
[07/Jun/2017 05:33:31] "GET /starfish/0,2048,2048,1952/1024,/0/default.jpg
HTTP/1.1”
[07/Jun/2017 05:33:32] "GET /starfish/2048,0,952,2048/476,/0/default.jpg
HTTP/1.1”
[07/Jun/2017 05:33:32] "GET
/starfish/2048,2048,952,1952/476,/0/default.jpg HTTP/1.1”
[07/Jun/2017 05:33:32] "GET
/starfish/1024,1024,1024,1024/1024,/0/default.jpg HTTP/1.1”
[07/Jun/2017 05:33:32] "GET
/starfish/1024,2048,1024,1024/1024,/0/default.jpg HTTP/1.1”
[07/Jun/2017 05:34:17] "GET /starfish/0,1024,1024,1024/1024,/0/default.jpg
info.json
small full
tiles
Tile requests
OpenSeadragon uses the width and scaleFactors
values in the tiles parameter to generate tile
requests:
There is some fiddly arithmetic to deal with partial
tiles at the lower and right edges of the image. This is
described in http://iiif.io/api/image/2.1/#a-
implementation-notes
Scaled full region requests
The dirty secret here is that OpenSeadragon does not
follow the scaled sizes declared in the sizes
parameter.
Instead it requests a set of images scaled by factors of
two. One must generate tiles in these sizes with care
to replicate the rounding, see
https://github.com/zimeon/iiif/blob/v1.0.4/iiif/static.py#L82-L89
A static tile generator
https://github.com/zimeon/iiif/tree/master/demo-static
Tile generation
./iiif_static.py --write-html demo-static -d demo-static -t 1024
testimages/starfish.jpg
iiif_static.py: source file: testimages/starfish.jpg
iiif.static: demo-static / starfish/0,0,1024,1024/1024,/0/default.jpg
iiif.static: demo-static / starfish/0,1024,1024,1024/1024,/0/default.jpg
iiif.static: demo-static / starfish/0,2048,1024,1024/1024,/0/default.jpg
iiif.static: demo-static / starfish/0,3072,1024,928/1024,/0/default.jpg
…
iiif.static: demo-static / starfish/2048,2048,952,1952/476,/0/default.jpg
iiif.static: demo-static / starfish/full/750,/0/default.jpg
iiif.static: demo-static / starfish/full/750,1000 -> starfish/full/750,
iiif.static: demo-static / starfish/full/375,/0/default.jpg
iiif.static: demo-static / starfish/full/375,500 -> starfish/full/375,
…
iiif.static: demo-static / starfish/full/1,1 -> starfish/full/1,
iiif.static: demo-static / starfish/info.json
iiif.static: Writing HTML to demo-static
iiif.static: demo-static / starfish.html
Local demo
Serve info.json, tiles
and OpenSeadragon
from local test server
Usual OpenSeadragon
experience
How many tiles will there be? And
how big will they be?
• There will be approximately ¼ as many tiles at the
second zoom level than the first, 1/16 at the second
etc. and the sum of this series 1 + ¼ + 1/16 ... = 4/3
• Thus we can estimate the number of tiles:
ceil( ceil(width/tilesize)*ceil(height/tilesize) * 4/3)
• The total size of the tiles will likely be similar to the
original image size (assuming the same level of
compression; starting from TIFF tiles will likely be
much smaller than the original)
CORS: Access-Control-Allow-Origin
“Servers should send the Access-Control-Allow-Origin
header with the value * in response to information
requests. The syntax is shown below and is described
in the CORS specification. This header is required in
order to allow the JSON responses to be used by Web
applications hosted on different servers.”
Access-Control-Allow-Origin: *
You can get away without CORS only if the JavaScript
client is served from the same host as the images, and
thus the images are not reusable.
CORS setup
Apache instructions along with the
IIIF Image API specification
http://iiif.io/api/annex/notes/apache/#enabling-
cors
Also easy to enable on AWS S3
(screenshot) and other services
https://docs.aws.amazon.com/AmazonS3/latest/
dev/cors.html
Pick name and location
AWS S3 hosting setup
Nothing under properties
Make publicly readable
Review, confirm
Set up static website
hosting
Base URL of site
Default document paths
Bucket and website
exist but not public
documents
Need to set up a user
(preferably using AWS
IAM system and assign
permissions to update
bucket, record key and
secret
...takes a few screens
and a little reading...
And set up CORS on bucket.
Gotcha: You’ll only see the Access-
Control-Allow-Origin in responses
requests with an Origin header, e.g.:
> curl -H "Access-Control-Request-Method: GET" -
H "Origin: http://example.com" -I http://iiif-static-
demo.s3-website.us-east-
2.amazonaws.com/vatlib/info.json
HTTP/1.1 200 OK
...
x-amz-request-id: 102493024334B199
Date: Wed, 07 Jun 2017 23:15:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD
Vary: Origin, Access-Control-Request-Headers,
Access-Control-Request-Method
Last-Modified: Wed, 07 Jun 2017 18:14:17 GMT
ETag: "da7fba981e2fd060c5b93a5d243895e8"
Content-Type: application/json
Content-Length: 1040
Server: AmazonS3
Generate tiles and copy to S3
iiif_static.py -p http://iiif-static-demo.s3-website.us-
east-2.amazonaws.com -d tmp --write-html=tmp --
include-osd --extra=full/106, vatlib.jpg
aws s3 sync tmp s3://iiif-static-demo --grants
read=uri=http://acs.amazonaws.com/groups/global/Al
lUsers
Image info.json:
http://iiif-static-demo.s3-website.us-east-
2.amazonaws.com/vatlib/info.json
Manually created a simple manifest:
http://iiif-static-demo.s3-website.us-east-
2.amazonaws.com/manifest.json
Same simple OpenSeadragon demo
Same as previous
demo running on
local machine
BUT can now refer
to image and
Presentation API
manifest...
Enter manifest URI, then shows on list
Mirador demo site
http://projectmirador.org/demo/ ,
select “Replace Object”
Selecting the object brings up the
image in Mirador
... with all the usual pan, zom, etc.
UV load fails (endlessly spinning icon)
because the JavaScript is HTTPS, image
information and tiles are HTTP 
Unfortunately, one has to use CloudFront to
get HTTPS on an S3 website
HTTPS and mixed-content
• All of the IIIF specs work over either HTTP
or HTTPS (though you shouldn’t use
authentication with HTTP)
• BUT, plain HTTP and HTTPS do not play
well together, see e.g. https://www.jack-
reed.com/2017/05/23/the-case-for-serving-your-iiif-
content-over-https.html
• “IIIF ceases to be interoperable if you
don't make all your resources available
over HTTPS, because you're effectively
denying access to secure clients” @tomcrane
the bottom line (literally) is:
HTTPS – Just do it!
Static IIIF A/V – yes!
• Current work toward IIIF A/V support (see:
https://github.com/IIIF/iiif-
av/blob/master/source/api/av/index.md ) imagines
most base functionality, supporting many of our
current use cases, being provided through “level-0”
implementation
• Common web video standards such as MPEG-DASH
and HLS provide flexible access to time-ranges etc.
through indexing schemes and simple byte-range
requests that are part of ordinary web servers
(including cloud services such as S3).
• Current understanding is that an equivalent of
“info.json” will be required to allow auth with A/V
That’s all
folks...
Questions
?
photo: View from Institutum Patristicum
Augustinianum conference center

More Related Content

What's hot

Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Amazon Web Services
 
Neo4j 4.1 overview
Neo4j 4.1 overviewNeo4j 4.1 overview
Neo4j 4.1 overview
Neo4j
 
Content Security Policy - Lessons learned at Yahoo
Content Security Policy - Lessons learned at YahooContent Security Policy - Lessons learned at Yahoo
Content Security Policy - Lessons learned at Yahoo
Binu Ramakrishnan
 
Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28
Amazon Web Services
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
NAVER D2
 
Securing Hadoop with Apache Ranger
Securing Hadoop with Apache RangerSecuring Hadoop with Apache Ranger
Securing Hadoop with Apache Ranger
DataWorks Summit
 
HTTP Security Headers
HTTP Security HeadersHTTP Security Headers
HTTP Security Headers
Ismael Goncalves
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
Terry Cho
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth
Fabio Fumarola
 
Manual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugManual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A Bug
Lewis Ardern
 
Serverless Application Security on AWS
Serverless Application Security on AWSServerless Application Security on AWS
Serverless Application Security on AWS
Amazon Web Services Japan
 
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
Amazon Web Services
 
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
Amazon Redshift ベンチマーク  Hadoop + Hiveと比較 Amazon Redshift ベンチマーク  Hadoop + Hiveと比較
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
FlyData Inc.
 
Importing Data into Neo4j quickly and easily - StackOverflow
Importing Data into Neo4j quickly and easily - StackOverflowImporting Data into Neo4j quickly and easily - StackOverflow
Importing Data into Neo4j quickly and easily - StackOverflow
Neo4j
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
ABC Talks
 
OSMC 2021 | Introduction into OpenSearch
OSMC 2021 | Introduction into OpenSearchOSMC 2021 | Introduction into OpenSearch
OSMC 2021 | Introduction into OpenSearch
NETWAYS
 
20180516 AWS Black Belt Online Seminar Amazon Connect
20180516 AWS Black Belt Online Seminar Amazon Connect20180516 AWS Black Belt Online Seminar Amazon Connect
20180516 AWS Black Belt Online Seminar Amazon Connect
Amazon Web Services Japan
 
ビッグデータサービス群のおさらい & AWS Data Pipeline
ビッグデータサービス群のおさらい & AWS Data Pipelineビッグデータサービス群のおさらい & AWS Data Pipeline
ビッグデータサービス群のおさらい & AWS Data Pipeline
Amazon Web Services Japan
 
Building Real-Time Travel Alerts
Building Real-Time Travel AlertsBuilding Real-Time Travel Alerts
Building Real-Time Travel Alerts
Timothy Spann
 

What's hot (20)

Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
 
Neo4j 4.1 overview
Neo4j 4.1 overviewNeo4j 4.1 overview
Neo4j 4.1 overview
 
Content Security Policy - Lessons learned at Yahoo
Content Security Policy - Lessons learned at YahooContent Security Policy - Lessons learned at Yahoo
Content Security Policy - Lessons learned at Yahoo
 
Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Securing Hadoop with Apache Ranger
Securing Hadoop with Apache RangerSecuring Hadoop with Apache Ranger
Securing Hadoop with Apache Ranger
 
HTTP Security Headers
HTTP Security HeadersHTTP Security Headers
HTTP Security Headers
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth
 
Manual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugManual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A Bug
 
僕とヤフーと時々Teradata #prestodb
僕とヤフーと時々Teradata #prestodb僕とヤフーと時々Teradata #prestodb
僕とヤフーと時々Teradata #prestodb
 
Serverless Application Security on AWS
Serverless Application Security on AWSServerless Application Security on AWS
Serverless Application Security on AWS
 
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
Work Backwards to Your Graph Data Model & Queries with Amazon Neptune (DAT330...
 
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
Amazon Redshift ベンチマーク  Hadoop + Hiveと比較 Amazon Redshift ベンチマーク  Hadoop + Hiveと比較
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
 
Importing Data into Neo4j quickly and easily - StackOverflow
Importing Data into Neo4j quickly and easily - StackOverflowImporting Data into Neo4j quickly and easily - StackOverflow
Importing Data into Neo4j quickly and easily - StackOverflow
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
 
OSMC 2021 | Introduction into OpenSearch
OSMC 2021 | Introduction into OpenSearchOSMC 2021 | Introduction into OpenSearch
OSMC 2021 | Introduction into OpenSearch
 
20180516 AWS Black Belt Online Seminar Amazon Connect
20180516 AWS Black Belt Online Seminar Amazon Connect20180516 AWS Black Belt Online Seminar Amazon Connect
20180516 AWS Black Belt Online Seminar Amazon Connect
 
ビッグデータサービス群のおさらい & AWS Data Pipeline
ビッグデータサービス群のおさらい & AWS Data Pipelineビッグデータサービス群のおさらい & AWS Data Pipeline
ビッグデータサービス群のおさらい & AWS Data Pipeline
 
Building Real-Time Travel Alerts
Building Real-Time Travel AlertsBuilding Real-Time Travel Alerts
Building Real-Time Travel Alerts
 

Similar to IIIF without an image server? No problem!

[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Html5
Html5Html5
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Esri Nederland
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
Naga Harish M
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011djmichael156
 
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
Frédéric Harper
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWDChristopher Schmitt
 
HTML 5
HTML 5HTML 5
HTML 5
Rajan Pal
 
Cloud Computing and HTML5, 2010
Cloud Computing and HTML5, 2010Cloud Computing and HTML5, 2010
Cloud Computing and HTML5, 2010
Moullet
 
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows AzureDeveloping iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
Simon Guest
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Web Apps
Web AppsWeb Apps
Web Apps
Tim Wray
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
ACCESS
 
Flutter movie apps tutor
Flutter movie apps tutorFlutter movie apps tutor
Flutter movie apps tutor
Herry Prasetyo
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
Browser Extensions for Web Hackers
Browser Extensions for Web HackersBrowser Extensions for Web Hackers
Browser Extensions for Web Hackers
Mark Wubben
 

Similar to IIIF without an image server? No problem! (20)

[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design
 
Html5
Html5Html5
Html5
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
 
Getting started with titanium
Getting started with titaniumGetting started with titanium
Getting started with titanium
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011VRE Cancer Imaging BL RIC Workshop 22032011
VRE Cancer Imaging BL RIC Workshop 22032011
 
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
2018 06-05 - Tokyo Fitbit Developers - Fitbit SDK & Web API Overview
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD
 
HTML 5
HTML 5HTML 5
HTML 5
 
Cloud Computing and HTML5, 2010
Cloud Computing and HTML5, 2010Cloud Computing and HTML5, 2010
Cloud Computing and HTML5, 2010
 
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows AzureDeveloping iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
 
Html5
Html5Html5
Html5
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Intro to appcelerator
Intro to appceleratorIntro to appcelerator
Intro to appcelerator
 
Web Apps
Web AppsWeb Apps
Web Apps
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
Flutter movie apps tutor
Flutter movie apps tutorFlutter movie apps tutor
Flutter movie apps tutor
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design
 
Browser Extensions for Web Hackers
Browser Extensions for Web HackersBrowser Extensions for Web Hackers
Browser Extensions for Web Hackers
 

More from Simeon Warner

Questioning Authority Lookup Service: Linking the Data
Questioning Authority Lookup Service: Linking the DataQuestioning Authority Lookup Service: Linking the Data
Questioning Authority Lookup Service: Linking the Data
Simeon Warner
 
OCFL: A Shared Approach to Preservation Persistence
OCFL: A Shared Approach to Preservation PersistenceOCFL: A Shared Approach to Preservation Persistence
OCFL: A Shared Approach to Preservation Persistence
Simeon Warner
 
The Oxford Common File Layout: A common approach to digital preservation
The Oxford Common File Layout: A common approach to digital preservationThe Oxford Common File Layout: A common approach to digital preservation
The Oxford Common File Layout: A common approach to digital preservation
Simeon Warner
 
Welcome to the FOLIO Community
Welcome to the FOLIO CommunityWelcome to the FOLIO Community
Welcome to the FOLIO Community
Simeon Warner
 
Sinopia & FOLIO: Bridging the gap to linked data cataloging
Sinopia & FOLIO: Bridging the gap to linked data cataloging Sinopia & FOLIO: Bridging the gap to linked data cataloging
Sinopia & FOLIO: Bridging the gap to linked data cataloging
Simeon Warner
 
FOLIO and Linked Data
FOLIO and Linked DataFOLIO and Linked Data
FOLIO and Linked Data
Simeon Warner
 
OCFL v1.0
OCFL v1.0OCFL v1.0
OCFL v1.0
Simeon Warner
 
IIIF Technical Specification Status Update
IIIF Technical Specification Status UpdateIIIF Technical Specification Status Update
IIIF Technical Specification Status Update
Simeon Warner
 
LKG Editor Dev
LKG Editor DevLKG Editor Dev
LKG Editor Dev
Simeon Warner
 
Don't bold the field name!
Don't bold the field name!Don't bold the field name!
Don't bold the field name!
Simeon Warner
 
Samvera and IIIF 2018
Samvera and IIIF 2018Samvera and IIIF 2018
Samvera and IIIF 2018
Simeon Warner
 
Oxford Common File Layout (OCFL)
Oxford Common File Layout (OCFL)Oxford Common File Layout (OCFL)
Oxford Common File Layout (OCFL)
Simeon Warner
 
ORCID @ Cornell
ORCID @ CornellORCID @ Cornell
ORCID @ Cornell
Simeon Warner
 
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
Simeon Warner
 
Introduction to the IIIF Presentation API (@SWIB17)
Introduction to the IIIF Presentation API (@SWIB17)Introduction to the IIIF Presentation API (@SWIB17)
Introduction to the IIIF Presentation API (@SWIB17)
Simeon Warner
 
Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)
Simeon Warner
 
From Open Access to Open Standards, (Linked) Data and Collaborations
From Open Access to Open Standards, (Linked) Data and CollaborationsFrom Open Access to Open Standards, (Linked) Data and Collaborations
From Open Access to Open Standards, (Linked) Data and Collaborations
Simeon Warner
 
Mind the gap! Reflections on the state of repository data harvesting
Mind the gap! Reflections on the state of repository data harvestingMind the gap! Reflections on the state of repository data harvesting
Mind the gap! Reflections on the state of repository data harvesting
Simeon Warner
 
ORCID & other Person iDs
ORCID & other Person iDsORCID & other Person iDs
ORCID & other Person iDs
Simeon Warner
 
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAFWho's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
Simeon Warner
 

More from Simeon Warner (20)

Questioning Authority Lookup Service: Linking the Data
Questioning Authority Lookup Service: Linking the DataQuestioning Authority Lookup Service: Linking the Data
Questioning Authority Lookup Service: Linking the Data
 
OCFL: A Shared Approach to Preservation Persistence
OCFL: A Shared Approach to Preservation PersistenceOCFL: A Shared Approach to Preservation Persistence
OCFL: A Shared Approach to Preservation Persistence
 
The Oxford Common File Layout: A common approach to digital preservation
The Oxford Common File Layout: A common approach to digital preservationThe Oxford Common File Layout: A common approach to digital preservation
The Oxford Common File Layout: A common approach to digital preservation
 
Welcome to the FOLIO Community
Welcome to the FOLIO CommunityWelcome to the FOLIO Community
Welcome to the FOLIO Community
 
Sinopia & FOLIO: Bridging the gap to linked data cataloging
Sinopia & FOLIO: Bridging the gap to linked data cataloging Sinopia & FOLIO: Bridging the gap to linked data cataloging
Sinopia & FOLIO: Bridging the gap to linked data cataloging
 
FOLIO and Linked Data
FOLIO and Linked DataFOLIO and Linked Data
FOLIO and Linked Data
 
OCFL v1.0
OCFL v1.0OCFL v1.0
OCFL v1.0
 
IIIF Technical Specification Status Update
IIIF Technical Specification Status UpdateIIIF Technical Specification Status Update
IIIF Technical Specification Status Update
 
LKG Editor Dev
LKG Editor DevLKG Editor Dev
LKG Editor Dev
 
Don't bold the field name!
Don't bold the field name!Don't bold the field name!
Don't bold the field name!
 
Samvera and IIIF 2018
Samvera and IIIF 2018Samvera and IIIF 2018
Samvera and IIIF 2018
 
Oxford Common File Layout (OCFL)
Oxford Common File Layout (OCFL)Oxford Common File Layout (OCFL)
Oxford Common File Layout (OCFL)
 
ORCID @ Cornell
ORCID @ CornellORCID @ Cornell
ORCID @ Cornell
 
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
From Open Annotations to W3C Web Annotations (and the impact on IIIF Present...
 
Introduction to the IIIF Presentation API (@SWIB17)
Introduction to the IIIF Presentation API (@SWIB17)Introduction to the IIIF Presentation API (@SWIB17)
Introduction to the IIIF Presentation API (@SWIB17)
 
Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)Introduction to the International Image Interoperability Framework (IIIF)
Introduction to the International Image Interoperability Framework (IIIF)
 
From Open Access to Open Standards, (Linked) Data and Collaborations
From Open Access to Open Standards, (Linked) Data and CollaborationsFrom Open Access to Open Standards, (Linked) Data and Collaborations
From Open Access to Open Standards, (Linked) Data and Collaborations
 
Mind the gap! Reflections on the state of repository data harvesting
Mind the gap! Reflections on the state of repository data harvestingMind the gap! Reflections on the state of repository data harvesting
Mind the gap! Reflections on the state of repository data harvesting
 
ORCID & other Person iDs
ORCID & other Person iDsORCID & other Person iDs
ORCID & other Person iDs
 
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAFWho's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
Who's the Author? Identifier soup - ORCID, ISNI, LC NACO and VIAF
 

Recently uploaded

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 

Recently uploaded (20)

Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 

IIIF without an image server? No problem!

  • 1. IIIF without an image server? No problem! Simeon Warner (Cornell) https://orcid.org/0000-0002-7970-7855 2017 IIIF Conference, The Vatican 8 June 2017
  • 2. Who are you? 1. Who has used IIIF in some form already? 2. Who feels they understand the distinction between the IIIF Image and Presentation APIs? 3. Who understands the contents of an IIIF Image API “info.json” file (response to Image Information Request)? http://iiif.io/api/image/2.1/ http://iiif.io/api/presentation/2.1/
  • 3. Punchline: You can use IIIF applications on images and manifests that are simply static files on a web- server In this talk I will focus on doing this to support the Image API, support for manifests and other Presentation API JSON files is trivial
  • 4. IIIF Image API “level 0” compliance Every Image API info.json must have the compliance level specified in the profile: Values are defined in the Image API Compliance document: http://iiif.io/api/image/2.1/compliance/
  • 5. “level 0” means Only the following parameter values are supported: • region=“full” except for tiles generates according to the tiles values • size=“full” except for values in sizes or tiles generated according to the tiles values • rotation=0 • quality=“default” • format=“jpg” But this is enough to pan and zoom.
  • 6. IIIF Image API to support viewers • The 90% (or is it 99%?) use-case for the IIIF Image API is driving tile-based rich pan and zoom viewers • The most popular IIIF viewers are currently the Universal Viewer and Mirador • Both of these viewers are based around the OpenSeadragon viewer library • ...so, to support these viewers one needs to cater for the needs of OpenSeadragon
  • 7. What does OpenSeadragon need? [07/Jun/2017 05:32:44] "GET /starfish/info.json HTTP/1.1” [07/Jun/2017 05:32:44] "GET /starfish/full/375,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:32:44] "GET /starfish/full/750,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:31] "GET /starfish/0,0,2048,2048/1024,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:31] "GET /starfish/0,2048,2048,1952/1024,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:32] "GET /starfish/2048,0,952,2048/476,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:32] "GET /starfish/2048,2048,952,1952/476,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:32] "GET /starfish/1024,1024,1024,1024/1024,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:33:32] "GET /starfish/1024,2048,1024,1024/1024,/0/default.jpg HTTP/1.1” [07/Jun/2017 05:34:17] "GET /starfish/0,1024,1024,1024/1024,/0/default.jpg info.json small full tiles
  • 8. Tile requests OpenSeadragon uses the width and scaleFactors values in the tiles parameter to generate tile requests: There is some fiddly arithmetic to deal with partial tiles at the lower and right edges of the image. This is described in http://iiif.io/api/image/2.1/#a- implementation-notes
  • 9. Scaled full region requests The dirty secret here is that OpenSeadragon does not follow the scaled sizes declared in the sizes parameter. Instead it requests a set of images scaled by factors of two. One must generate tiles in these sizes with care to replicate the rounding, see https://github.com/zimeon/iiif/blob/v1.0.4/iiif/static.py#L82-L89
  • 10. A static tile generator https://github.com/zimeon/iiif/tree/master/demo-static
  • 11. Tile generation ./iiif_static.py --write-html demo-static -d demo-static -t 1024 testimages/starfish.jpg iiif_static.py: source file: testimages/starfish.jpg iiif.static: demo-static / starfish/0,0,1024,1024/1024,/0/default.jpg iiif.static: demo-static / starfish/0,1024,1024,1024/1024,/0/default.jpg iiif.static: demo-static / starfish/0,2048,1024,1024/1024,/0/default.jpg iiif.static: demo-static / starfish/0,3072,1024,928/1024,/0/default.jpg … iiif.static: demo-static / starfish/2048,2048,952,1952/476,/0/default.jpg iiif.static: demo-static / starfish/full/750,/0/default.jpg iiif.static: demo-static / starfish/full/750,1000 -> starfish/full/750, iiif.static: demo-static / starfish/full/375,/0/default.jpg iiif.static: demo-static / starfish/full/375,500 -> starfish/full/375, … iiif.static: demo-static / starfish/full/1,1 -> starfish/full/1, iiif.static: demo-static / starfish/info.json iiif.static: Writing HTML to demo-static iiif.static: demo-static / starfish.html
  • 12. Local demo Serve info.json, tiles and OpenSeadragon from local test server Usual OpenSeadragon experience
  • 13. How many tiles will there be? And how big will they be? • There will be approximately ¼ as many tiles at the second zoom level than the first, 1/16 at the second etc. and the sum of this series 1 + ¼ + 1/16 ... = 4/3 • Thus we can estimate the number of tiles: ceil( ceil(width/tilesize)*ceil(height/tilesize) * 4/3) • The total size of the tiles will likely be similar to the original image size (assuming the same level of compression; starting from TIFF tiles will likely be much smaller than the original)
  • 14. CORS: Access-Control-Allow-Origin “Servers should send the Access-Control-Allow-Origin header with the value * in response to information requests. The syntax is shown below and is described in the CORS specification. This header is required in order to allow the JSON responses to be used by Web applications hosted on different servers.” Access-Control-Allow-Origin: * You can get away without CORS only if the JavaScript client is served from the same host as the images, and thus the images are not reusable.
  • 15. CORS setup Apache instructions along with the IIIF Image API specification http://iiif.io/api/annex/notes/apache/#enabling- cors Also easy to enable on AWS S3 (screenshot) and other services https://docs.aws.amazon.com/AmazonS3/latest/ dev/cors.html
  • 16. Pick name and location AWS S3 hosting setup
  • 20. Set up static website hosting
  • 21. Base URL of site Default document paths
  • 22. Bucket and website exist but not public documents
  • 23. Need to set up a user (preferably using AWS IAM system and assign permissions to update bucket, record key and secret ...takes a few screens and a little reading...
  • 24. And set up CORS on bucket. Gotcha: You’ll only see the Access- Control-Allow-Origin in responses requests with an Origin header, e.g.: > curl -H "Access-Control-Request-Method: GET" - H "Origin: http://example.com" -I http://iiif-static- demo.s3-website.us-east- 2.amazonaws.com/vatlib/info.json HTTP/1.1 200 OK ... x-amz-request-id: 102493024334B199 Date: Wed, 07 Jun 2017 23:15:59 GMT Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, HEAD Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method Last-Modified: Wed, 07 Jun 2017 18:14:17 GMT ETag: "da7fba981e2fd060c5b93a5d243895e8" Content-Type: application/json Content-Length: 1040 Server: AmazonS3
  • 25. Generate tiles and copy to S3 iiif_static.py -p http://iiif-static-demo.s3-website.us- east-2.amazonaws.com -d tmp --write-html=tmp -- include-osd --extra=full/106, vatlib.jpg aws s3 sync tmp s3://iiif-static-demo --grants read=uri=http://acs.amazonaws.com/groups/global/Al lUsers Image info.json: http://iiif-static-demo.s3-website.us-east- 2.amazonaws.com/vatlib/info.json Manually created a simple manifest: http://iiif-static-demo.s3-website.us-east- 2.amazonaws.com/manifest.json
  • 26. Same simple OpenSeadragon demo Same as previous demo running on local machine BUT can now refer to image and Presentation API manifest...
  • 27. Enter manifest URI, then shows on list Mirador demo site http://projectmirador.org/demo/ , select “Replace Object”
  • 28. Selecting the object brings up the image in Mirador
  • 29. ... with all the usual pan, zom, etc.
  • 30. UV load fails (endlessly spinning icon) because the JavaScript is HTTPS, image information and tiles are HTTP  Unfortunately, one has to use CloudFront to get HTTPS on an S3 website
  • 31. HTTPS and mixed-content • All of the IIIF specs work over either HTTP or HTTPS (though you shouldn’t use authentication with HTTP) • BUT, plain HTTP and HTTPS do not play well together, see e.g. https://www.jack- reed.com/2017/05/23/the-case-for-serving-your-iiif- content-over-https.html • “IIIF ceases to be interoperable if you don't make all your resources available over HTTPS, because you're effectively denying access to secure clients” @tomcrane the bottom line (literally) is: HTTPS – Just do it!
  • 32. Static IIIF A/V – yes! • Current work toward IIIF A/V support (see: https://github.com/IIIF/iiif- av/blob/master/source/api/av/index.md ) imagines most base functionality, supporting many of our current use cases, being provided through “level-0” implementation • Common web video standards such as MPEG-DASH and HLS provide flexible access to time-ranges etc. through indexing schemes and simple byte-range requests that are part of ordinary web servers (including cloud services such as S3). • Current understanding is that an equivalent of “info.json” will be required to allow auth with A/V
  • 33. That’s all folks... Questions ? photo: View from Institutum Patristicum Augustinianum conference center

Editor's Notes

  1. I will describe in a few slides the use of IIIF image viewers over "level0" static image tiles hosted on a simple web server (such as a Amazon S3 static website), and note that this will also be possible with IIIF A/V in the future. I'll then run through a quick canned-demo of tile generation and then UV and Mirador using these tiles