В настоящее время я играю с Cling (интерпретатором C ++) и его ядром jupyter, и мне хотелось бы отобразить изображение в блокноте Jupyter, используя какую-то функцию C ++, аналогичную IPython.display.
Что будет лучшим подходом для этого?
Обновить
Спасибо за ответы, я в настоящее время копаюсь в обоих вариантах, чтобы проверить, какой у Windows стабильный выпуск, и вернусь, вероятно, на следующей неделе (много другой работы сейчас под рукой) с комментариями к каждому из них.
Эта функция должна быть реализована на уровне ядра, то есть, если сам по себе cling не дает вам запасного люка, вы, вероятно, не можете этого сделать.
Технически под капотом, когда вы что-то выводите, цепляет display_data
сообщение, содержащее mimebundle (отображение типа mimetype на данные), поэтому для этого нужно подключиться к самому ядру.
Я пока не верю, что это в Клинге, хотя QuantStack люди недавно сделали демонстрацию на JupyterCon (видео еще не в сети), где они показали виджеты в их Xeus-льнет ядро.
Поэтому я настоятельно рекомендую вам попробовать xeus-cling и спросить у разработчиков (откройте проблему на GitHub или попробуйте канал Gitter, на который они реагируют).
Будет ли это делать то, что вам нужно? Из цепочки / 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) {
Я рекомендую вам ознакомиться с функцией рендеринга типа MIME xeus-cling
ядро.
Для любого типа вы можете переопределить mime_bundle_repr
функция. Он выбирается с помощью поиска, зависящего от аргументов, и ваш объект будет волшебно отображаться в записной книжке Jupyter.
xeus-cling также поддерживает интерактивные виджеты Jupyter и быструю документацию.
Вы можете попробовать его в режиме онлайн, нажав кнопку «Запустить связующее» в верхней части страницы README для репозитория GitHub.