2016-09-16 63 views
1

我從Jupyter筆記本拉取PNG圖像,並設法使用IPython.display.Image而不是matplotib.pyplot.plt顯示。我錯過了什麼?我使用python 2.7。在python 2.7顯示matplotlib.pyplot框架中的PNG

我使用下面的算法:

要打開筆記本JSON內容我做的:

def cell_to_image(cell, out_value_item_number=1): 
    if "execution_count" in cell.keys(): # i.e version >=4 
     return cell["outputs"][out_value_item_number]['data']['image/png'] 
    elif "prompt_number" in cell.keys(): # i.e version < 4 
     return cell["outputs"][out_value_item_number]['png'] 
    return None 

cell_image = cell_to_image(cell) 

import nbformat 
notebook_ = nbformat.read(file_notebook, 4) 

檢索使用相關cell信息我拉從它的png格式的信息後

cell_image(它是unicode)的前幾個字符看起來像:

iVBORw0KGgoAAAANSUhEUgAAA64AAAFMCAYAAADLFeHSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n 
AAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8jef/x/HXyTjZiYQkCGrU3ruR0tr9oq2qGtGo0dbe 
\nm5pVlJpFUSMoVb6UoEZ/lCpatWuPUiNEEiMDmef3R75OexonJKUO3s/HI4/mXPd1X/d1f+LRR965 
\n7/u6DSaTyYSIiIiIiIiIjbJ70hMQERERERERyYiCq4iIiIiIiNg0BVcRERERERGxaQquIiIiIiIi 
\nYtMUXEVERERERMSmKbiKiIiIiIiITVNwFRGRxyIkJIRixYqxfv36+24/e/YsxYoVo3jx4v/yzGxb 
\naGgoderUIS4uDoBdu3bRsmVLKlasyCuvvMKgQYOIjo622CcsLIyGDRtSunRp6tSpw8KFC62OW7p0 
\naRo2bJju53Lnzh1GjRrFyy+/TNmyZWnRogW//fbbQ835q6++olGjRpQvX5769eszc+ZMkpOTzdtT 
\nU1OZNGkSNWrUoHTp0jRp0oTdu3enGyc2NpZOn 

我可以很容易地繪製在使用

from IPython.display import Image 
Image(cell_image) 

而現在我的問題我Jupityer筆記本:

我怎麼能操縱cell_imageplt.subplot友好嗎? (假設import matplotlib.pyplot as plt)。 我知道plt.imshow不會工作,因爲這將需要一個數組,這不是我的情況(這是一個字符串,據我瞭解)。

回答

2

如果你在變量string_rep中有你的圖像字符串表示,下面的代碼應該工作。

from io import BytesIO 

import matplotlib.image as mpimage 
import matplotlib.pyplot as plt 

with BytesIO(string_rep.decode('base64')) as byte_rep: 
    image = mpimage.imread(byte_rep) 

plt.imshow(image)