社区导航

 

搜索
查看: 171|回复: 1
打印 上一主题 下一主题

[讨论] 使用PyPortal展示克利夫兰艺术博物馆的艺术品

[复制链接]

9733

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

跳转到指定楼层
楼主
发表于 2020-2-5 10:48 | 只看该作者 |只看大图 |倒序浏览 |阅读模式

介绍

如今,不仅在博物馆内,在室外都在扩大公众对其艺术收藏品的访问。数字化举措将曾经被归入博物馆范围的艺术品带给了21世纪的全球观众。这些现代博物馆已实质上成为新的内容提供商。就像提供视频和音乐内容的现代公司Netflix和Pandora一样,博物馆通过收集绘画,照片,珠宝和其他媒体而成为自己的内容提供商。对这些收藏进行数字化处理并使其可公开获取,将这些材料吸引给全球读者。

克利夫兰艺术博物馆就是此类博物馆中的佼佼者。 

克利夫兰艺术博物馆

克利夫兰艺术博物馆(CMA)位于俄亥俄州克利夫兰,拥有来自世界各地的61,000多件艺术品。它成立于1913年,以其拥有的亚洲和埃及艺术品而享誉国际。2018年有超过770,000人参观了博物馆。CMA于2019年1月23日宣布,其藏品中超过31,000张艺术品的数字图像将在公共领域提供。收藏品中包含数十种艺术类型,包括绘画,素描,照片,硬币和珠宝。所有这些图像都可以,该允许人们共享,协作,重新混合和重用集合中的图像以用于商业和非商业用途。CMA还创建,该允许程序轻松检索有关每个图像的信息。
 

图片


使用Art PyPortal框架

该项目使用在PyPortal上运行的CircuitPython访问CMA API。它使用API​​从集合中选择一个随机项目。它使用Adafruit IO图像转换服务将来自集合的JPEG图像转换并重新调整为BMP图像,并调整为PyPortal的尺寸。最后,将转换后的图像下载到PyPortal进行显示。PyPortal的一项新功能允许正确缩放人像图像,这是此项目的一项重要功能。

给设备加电时,PyPortal在连接到互联网并检索其第一张图像时会显示一个Cleveland艺术博物馆横幅。PyPortal从集合中可用的31,000多种图像中检索图像,并将其标题和标题显示在屏幕底部。

默认情况下,显示屏每5分钟自动更新一次(可以在代码中更改),这需要3个月(24x7)的时间才能显示全部图像。您也可以通过使用PyPortal的触摸屏触摸屏幕上的任意位置来手动更新显示。触摸屏幕时,显示屏右下角将出现一个红色圆圈,表示当前正在更新屏幕。在通过自动或手动更新进行屏幕更新时,触摸屏将处于非活动状态。请注意,Adafruit IO图像转换器服务受速率限制,因此图像之间最短间隔时间是一分钟。




更多内容请参考:

评分

1

查看全部评分

0


9733

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

沙发
 楼主| 发表于 2020-2-5 10:49 | 只看该作者

运行程序前,需要先安装下面的库:

 

import time
import random
import board
from adafruit_pyportal import PyPortal
from adafruit_display_shapes.circle import Circle

WIDTH = board.DISPLAY.width
HEIGHT = board.DISPLAY.height

#pylint: disable=line-too-long

# these lines show the entire collection
APIURL = "https://openaccess-api.clevelandart.org/api/artworks?cc0=1&has_image=1&indent=2&limit=1&skip="
IMAGECOUNT = 31954

# uncomment these lines to show just paintings
# APIURL = "https://openaccess-api.clevelandart.org/api/artworks?cc0=1&has_image=1&indent=2&limit=1&type=Painting&skip="
# IMAGECOUNT = 3223

BACKGROUND_FILE = "/background.bmp"
if WIDTH > 320:
    BACKGROUND_FILE = "/background_480.bmp"

pyportal = PyPortal(default_bg=BACKGROUND_FILE,
                    image_json_path=["data", 0, "images", "web", "url"],
                    image_dim_json_path=(["data", 0, "images", "web", "width"],
                                         ["data", 0, "images", "web", "height"]),
                    image_resize=(WIDTH, HEIGHT - 15),
                    image_position=(0, 0),
                    text_font="/fonts/OpenSans-9.bdf",
                    json_path=["data", 0, "title"],
                    text_position=(4, HEIGHT - 9),
                    text_color=0xFFFFFF)

circle = Circle(WIDTH - 8, HEIGHT - 7, 5, fill=0)
pyportal.splash.append(circle)
loopcount = 0
errorcount = 0
while True:
    response = None
    try:
        circle.fill = 0xFF0000
        itemid = random.randint(1, IMAGECOUNT)
        # itemid = 20 # portrait mode example
        # itemid = 21 # landscape mode example
        print("retrieving url:", APIURL + str(itemid))
        response = pyportal.fetch(APIURL + str(itemid))
        circle.fill = 0
        print("Response is", response)
        loopcount = loopcount + 1

    except (RuntimeError, KeyError, TypeError) as e:
        print("An error occured, retrying! -", e)
        print("loop counter:", loopcount)
        assert errorcount < 20, "Too many errors, stopping"
        errorcount = errorcount + 1
        time.sleep(60)
        continue

    errorcount = 0
    stamp = time.monotonic()
    # wait 5 minutes before getting again
    while (time.monotonic() - stamp) < (5*60):
        # or, if they touch the screen, fetch immediately!
        if pyportal.touchscreen.touch_point:
            break


您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /3 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( )

GMT+8, 2020-2-10 13:08 , Processed in 0.114468 second(s), 19 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表
快乐飞艇怎么玩才能赢 快乐飞艇杀一码的网址 秒速赛车是真的吗 快乐飞艇如何玩才稳 快乐飞艇能玩吗 快乐飞艇是合法的吗 上海快3 快乐赛车代理怎么挣钱 快乐飞艇官方网站 快乐飞艇一天开多少期