lovasoa / dezoomify

Dezoomify is a web application to download zoomable images from museum websites, image galleries, and map viewers. Many different zoomable image technologies are supported.
https://dezoomify.ophir.dev
GNU General Public License v2.0
675 stars 75 forks source link

www.kb.nl #397

Open Cherylr22 opened 4 years ago

Cherylr22 commented 4 years ago

Site name and desciption

https://galerij.kb.nl/kb.html#/nl/froissart/page/4/zoom/3/lat/-57.51582286553883/lng/-18.28125

Hi there. I have tried various methods to download from this site but no luck so far. Can you add it to dezoomify? The site has a lot of medieval manuscripts and paintings. Thanks. :)

Example URLs

https://galerij.kb.nl/kb.html#/nl/froissart/page/4/zoom/3/lat/-57.51582286553883/lng/-18.28125 https://galerij.kb.nl/data/froissart/data.json

Current error message

An error occured while trying to dezoomify your image. This is probably because dezoomify did not manage to find a zoomable image at the address you gave.

lanaloft commented 4 years ago

in dezoomify_rs

https://galerij.kb.nl/data/froissart/fl003v-Ir/5/{{X}}/{{Y}}.jpg

example: Site KB.NL (dutch national library) · Issue #333 · lovasoa/dezoomify

Site KB.NL (dutch national library) · Issue #333 · lovasoa/dezoomify

Site name and desciption www.kb.nl This is the site of the dutch national library. It contains a lot of interest...

Cherylr22 commented 4 years ago

Thanks. The tile size appears to be 256, but how do I find the x and y resolutions? I don't see them here: https://galerij.kb.nl/data/froissart/data.json

Example page 179: https://galerij.kb.nl/data/froissart/165v-166r/5/0/1.jpg

Here is what my 'tiles.yaml' file looks like (I have just used random resolutions for x and y):

# The url of individual tiles, where {{ expressions }} will be evaluated using the variables below
url_template: "https://galerij.kb.nl/data/froissart/165v-166r/5/0/{{
  x/tile_size +
  y/tile_size * (1+width/tile_size)
}}.jpg"

variables:
  # The x position of tiles goes from 0 to the image width with an increment of the tile width
  - name: x
    from: 0
    to: 2912 # Image width
    step: 256 # Tile width

  - name: y
    from: 0
    to: 3976 # Image height
    step: 256 # Tile height

  - name: tile_size
    value: 256

  - name: width
    value: 2912 # Image width

I get the following error messages when running dezoomify-rs app:

network error: HTTP status client error (404 Not Found) for url (https://galerij.kb.nl/data/froissart/16[ETA:0s] ########################################  192/192  Finished tile download
Saving the image to dezoomified.jpg...
Saved the image to dezoomified.jpg
ERROR Only 14 tiles out of 192 could be downloaded. The resulting image was still created as dezoomified.jpg.
lanaloft commented 4 years ago

you don't need the values for {{X}} and {{Y}} use the generic dezoomify to figure out the URL with this tutorial, then put this URL in the dezoomify-rs app.

after a while  the image is saved,. good luck!

lovasoa commented 4 years ago

Here is the tiles.yaml you need :

# The url of individual tiles, where {{ expressions }} will be evaluated using the variables below
url_template: "https://galerij.kb.nl/data/froissart/fl003v-Ir/5/{{
  x/tile_size
}}/{{
  height - y/tile_size
}}.jpg"

variables:
  # The x position of tiles goes from 0 to the image width with an increment of the tile width
  - name: x
    from: 0
    to: 4864 # Image width : 19*256=4864
    step: 256 # Tile width

  - name: y
    from: 0
    to: 3328 # Image height: 13*256=3328
    step: 256 # Tile height

  - name: tile_size
    value: 256

  - name: height
    value: 13 # Height in number of tiles

The particularity of this site is that it counts the x position from bottom to top, instead of the usual top to bottom. To create the tiles.yaml, you can scroll to the top right of the image, and find the tile for this corner. In the case of this image, it's https://galerij.kb.nl/data/froissart/fl003v-Ir/5/19/13.jpg So you know the last tile is at position (19,13), the tile size is 256, and you know how tiles are counted, this is enough to create the tiles.yaml with the right formula for x and y.

lovasoa commented 4 years ago

dezoomified

lovasoa commented 4 years ago

@lanaloft : The generic dezoomer doesn't work in this case because the x position is counted from the bottom of the image, not the top. (notice the heigh - y/tile_size in the formula in tiles.yaml)

Cherylr22 commented 4 years ago

It works thank you! :)