Jupyter:如何在新内核中实现图像查看功能

Posted

技术标签:

【中文标题】Jupyter:如何在新内核中实现图像查看功能【英文标题】:Jupyter: how to implement image viewing functionality in new kernel 【发布时间】:2017-09-08 18:58:42 【问题描述】:

我目前正在使用 Cling(C++ 解释器),它是 jupyter 内核,我想使用类似于 IPython.display 的某种 C++ 函数在 Jupyter notebook 中显示图像。 最好的方法是什么?

更新

感谢您的回复,我目前正在研究这两个选项,以检查 Windows 上的版本多少比较稳定,并且可能会在下周返回(目前还有很多其他工作正在进行),每个选项都有 cmets。

【问题讨论】:

【参考方案1】:

该功能需要在内核级别实现,也就是说,如果 cling 本身没有给你逃生舱,你可能做不到。

从技术上讲,当您显示某些内容时,cling 将发送一个display_data 消息,其中包含一个 mimebundle(一种映射表单 mimetype 到数据),因此您需要挂钩到内核本身来执行此操作。

我不相信它还在 Cling 中,尽管 QuantStack 的人最近在 JupyterCon 上做了一个演示(视频尚未在线),他们在他们的 Xeus-Cling 内核中展示了 widgets。

因此,我强烈建议您尝试 xeus-cling,并询问那里的开发人员(在 GitHub 上打开问题,或尝试他们响应的 Gitter 频道)。

【讨论】:

【参考方案2】:

这可以满足您的需要吗?来自 cling/tools/Jupyter/Kernel.cpp:

/// Push MIME stuff to Jupyter. To be called from user code.
///\param contentDict - dictionary of MIME type versus content. E.g.
/// "text/html", "<div></div>", 
///\returns `false` if the output could not be sent.
bool pushOutput(const std::map<std::string, MIMEDataRef> contentDict) 

【讨论】:

【参考方案3】:

我建议您查看xeus-cling 内核的丰富的 mime 类型渲染功能。

对于任何类型,您都可以覆盖mime_bundle_repr 函数。它是通过依赖于参数的查找来获取的,您的对象将神奇地显示在 Jupyter 笔记本中。

xeus-cling 还支持 Jupyter 交互式小部件和快速文档。

您可以通过单击 GitHub 存储库的 README 页面顶部的“启动 Binder”按钮来在线试用它。

【讨论】:

以上是关于Jupyter:如何在新内核中实现图像查看功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIScrollView 中实现捏合以关闭功能?

如何在我的网站中实现 PDF/ PPT 查看功能?

在新特性中实现 WithFilters

在 ListView 的 header 中实现图像滚动

如何在 AFNetworking 2.0 中实现带身份验证的图像下载?

如何通过 XCode 在 iOS 应用中实现相机功能