正在查看 7 个帖子:1-7 (共 7 个帖子)
  • 作者
    帖子
  • @25902 回复

    Fdr
    游客

    Dezoomify-rs 进阶-配合 yaml 下载

     

    适用:在找不到现成的 xml 或 json 文件的情况下,就可以自制 yaml 文件下载。

     

    相关贴子:https://new.shuge.org/meet/topic/2042/

     

    yaml 代码:

    url_template: "https://shuziwenwu-1259446244.cos.ap-beijing.myqcloud.com/relic/6839c7a486174dda97c7211e50ff949a/image-bundle/15/{{x/254}}_{{y/254}}.jpg"

     

    variables:

    - name: x

    from: 0

    to: 31676 # Image width, taken from stage 1

    step: 254 # Tile width, taken from stage 1

     

    - name: y

    from: 0

    to: 2160 # Image height

    step: 254 # Tile height

     

    headers:

    Referer: "https://digicol.dpm.org.cn"

     

    注意点:

    1,YAML 大小写敏感;

    2,使用缩进代表层级关系;

    3,缩进只能使用空格,不能使用 TAB,不要求空格个数,只需要相同层级左对齐(一般 2 个或 4 个空格)

     

    新建一个 txt 文件,然后把以上代码拷贝进去,然后另存为 tiles.yaml。

    以后就可以在这个基础上修改参数即可。

     

    下载时的命令行指令:

    dezoomify-rs -l “tiles.yaml” “image.jpg”

    注意:是英文字母 l,而不是数字 1。

    一定要使用 tiles.yaml 的名称。

    下载的文件名可以自己写,但是后缀,如果文件特别大,建议使用 tiff 或 png,而不是 jpg。

     

    再来逐步解释一下 yaml 文件中的几个参数,以及如何获得这些参数。

    先要明白原理,yaml 是一个配置文件,整个下载高清图的原理就是拼图,程序把每个小文件都下载下来,最后拼成一个大图。就是这样的原理。

    所以作为拼图程序来讲,必须要得到具体每个切片图片的下载地址,才能进行下载,而 yaml 也正是解决这个问题。

     

    url_template: "https://shuziwenwu-1259446244.cos.ap-beijing.myqcloud.com/relic/6839c7a486174dda97c7211e50ff949a/image-bundle/15/{{x/254}}_{{y/254}}.jpg"

     

    这里是切片图片下载地址的模板。这个地址的取得,通过 Chrome 开发者模式去取得这些小图。然后就可以得到具体某个小图的下载地址。但是原小图最后部分是比如 0_0.jpg,0_1.jpg 这样的。所以要通过算法得到这样的文件名。

    还要注意,在此之前,有 15,15 这里称为放大系数。如何得到这个 15 呢。就是在浏览的时候,把图像放大到最大,这个时候所得到的地址,如果这里是 15 就代表放大系数是 15。这样可以取得最高清晰度的图。

     

    这里的 254 代表什么意思呢,代表的就是一个小拼图的宽或者是高。

    建议结合拼图去理解这个东西,原理是一样的。

     

    后面的代码,width 和 height 就是最终整个拼图的长和宽。step 代表的步长,就是每个最小的拼图切片的长或宽。

    程序会自动加上去,然后最终得到比如 0_0,0_1 这样的,然后把这些拼图切片下载齐全再拼在一块儿。

    Referer: "https://digicol.dpm.org.cn"

    这里填的网址,就是这个图片的网站网址。

     

    主要的难点就在于得到这些参数。因为具体每个网站,这些环节都是不一样的。所以要自己想办法得到想要的参数。

    一般的办法,仍然是通过 Chrome 浏览器的开发者模式,去得到这些想要的参数。

     

    理解原理是非常重要的,懂了原理以后,才可以适用于各种不同的情况。

    如果不明白原理的话,换一个新的网站,马上就蒙了。

     

     

     

    @25903 回复

    Fdr
    游客

    需要下载的图像地址:

    digicol.dpm.org.cn/cultu...c3dbfaad58

    @25905 回复

    木吉他
    游客

    求您的联系方式!

    @25909 回复

    Fdr
    游客

    yaml 文件,要保证在格式上不出问题,请直接到 new.shuge.org/meet/topic/2042/ ,找到 @6139 这一楼。

    这里的格式是最标准的。新建一个 tiles.txt 文件后,把代码块这段全部复制粘贴进去,最后把文件名修改成 tiles.yaml 就可以了。

    这样就可以得到一个标准的 yaml 模板了。在此模板上进行参数的修改,以保证 tiles.yaml 格式是没有问题的。

    @25910 回复

    Fdr
    游客

    图像各个参数的取得方法。

    方法原贴:https://new.shuge.org/meet/topic/15543/#post-16727

    请直接参看原贴,原贴的格式排版比较好。

     

    可以使用下面的方法获取相关图片参数

    首先,添加以下代码为 chrome 书签(其它类似)

    1,进入书签管理(快捷键是 ctrl+shift+o)
    chrome://bookmarks/

    名称随意,网址为以下参数

    javascript:document.getElementsByTagName("body").innerHTML = JSON.stringify(viewer.source.Image);
    2,进入故宫名画记的任意一个藏品浏览页面,如
    minghuaji.dpm.org.cn/paint...gfttf0od7l

    点击书签中的:显示名画记参数(或你自定义的名字)

    页面将解密相关参数

    {"xmlns":"http://schemas.microsoft.com/deepzoom/2009","Url":"https://minghuaji-1259446244.cos.ap-beijing.myqcloud.com/bundle/pljw9md37m1r3svpmriy03gfttf0od7l/","Overlap":"1","TileSize":"254","Format":"png","Size":{"Width":"50068.0","Height":"3756.0"}}
    最后,根据参数自定义 tiles.yaml

    @25916 回复

    Fdr
    游客

    根据参数自定义 tiles.yaml 的方法。

    举例:https://digicol.dpm.org.cn/cultural/detail?id=52d8831084314b299d8d30c3dbfaad58

    (这里主要是要通过举例,学习背后的思路和方法)

    通过上面的书签方法,得到的参数:

    {"xmlns":"http://schemas.microsoft.com/deepzoom/2009","Url":"https://shuziwenwu-1259446244.cos.ap-beijing.myqcloud.com/relic/7cd8e6cc88dc4ea1bec695b35f9d3366/image-bundle/","Overlap":"1","TileSize":"510","Format":"png","Size":{"Width":"31674.0","Height":"2160.0"}}

    这里关键是 url_temple 这一栏怎么填写。

    这里需要使用 Chrome 打开 digicol.dpm.org.cn/cultu...s?id=70958 ,然后进入开发者模式,F12 或者 CTRL+ALT+I,如果快捷键不能使用,就按右上角三个竖点,更多工具,开发者工具。

    依次选择 Network,Img。

    并把图像放大到最大。这个时候随便选择一个小的切片图片,并复制地址。右击 Copy,Copy link address。

    此时得到比如:

    shuziwenwu-1259446244.cos.ap-beijing.myqcloud.com/relic...5/43_2.png

    这里 15,就是放大系数,不需要修改的,你只需要在之前,把图像放大到最大,他自然就会是 15 的。后面是不是看到 43_2?这个是随便的,也许你的可能是 3_1 这都可以。这里需要修改成:{{x/510}}_{{y/510}}。510 就是上面的 TileSize。

    而 headers 那里,则是填写要下载的网站的域名地址。

    所以最终整个 yaml 就是:

    url_template: "https://shuziwenwu-1259446244.cos.ap-beijing.myqcloud.com/relic/7cd8e6cc88dc4ea1bec695b35f9d3366/image-bundle/15/{{x/510}}_{{y/510}}.png"

    variables:
    - name: x
    from: 0
    to: 31674 # Width
    step: 510 # TileSize

    - name: y
    from: 0
    to: 2160 # Height
    step: 510 # TileSize

    headers:
    Referer: "https://digicol.dpm.org.cn"

    以上代码经过测试,成功。

    @26002 回复

    未曾
    管理员

    @Fdr #25916

    可以使用这个方法代替,简化操作。
    new.shuge.org/meet/...post-25911

正在查看 7 个帖子:1-7 (共 7 个帖子)
正在查看 7 个帖子:1-7 (共 7 个帖子)
回复至:Dezoomify-rs 进阶-配合 yaml 下载
您的信息: