代码之家  ›  专栏  ›  技术社区  ›  Sergey Zakharov

如何从上传的png文件中打开Google Colaboratory笔记本单元中的图像?

  •  39
  • Sergey Zakharov  · 技术社区  · 7 年前

    我正在使用谷歌协作笔记本。 我上传了一个名为 bp.png 进入工作目录,我可以通过运行 !ls 在代码单元格中。 然后,我尝试使用这段代码在降价单元格中查看图像:

    <h2 align="center">Image</h2>
    <img src="bp.png" width="600">
    

    但是,在运行该操作后,Colab笔记本的单元格保持为空(标题除外),尽管如果在本地Jupyter笔记本中运行该操作,图像确实会显示在该本地笔记本的单元格中。

    更新时间:

    我知道我可以使用上载到工作目录的文件,因为我的自定义 .py 我上传的文件,导入到我的Colab笔记本中,没有任何问题。例如,我可以上传一个文件 py_file.py 然后在Colab笔记本中使用 from py_file import some_function ,它是有效的。

    3 回复  |  直到 7 年前
        1
  •  80
  •   Danny Bullis    3 年前

    试试这个

    from IPython.display import Image
    Image('bp.png')
    

    您还可以设置宽度和高度

    Image("bp.png", width=100, height=100)
    

    要显示多个图像,需要调用display。(只需1张图像即可自动显示)

    from IPython.display import Image, display
    display(Image('1.png'))
    display(Image('2.png'))
    

    2019年1月更新

    将您的图像放入 /usr/local/share/jupyter/nbextensions/

    然后从中显示 /nbextensions/ ,例如。

    %%html
    <img src='/nbextensions/image.png' />
    

    2022年2月更新

    在Google Colab中,打开文件浏览器图标(左侧导航栏)并导航到 usr/local/share/jupyter/nbextensions 如上所述。单击 nbextensions 文件夹(>);上载并选择要上载的图像。确保更新 img 使用正确的文件名标记上面的代码段,然后您将希望使用代码框(而不是文本)。请注意,当您的运行时被回收时,您的图像将从目录中删除(当我上载图像时,我收到了一个警告对话框),因此请小心。

        2
  •  3
  •   NeStack    4 年前

    还可以在Colab的标记/文本单元格中显示图像。创建一个文本单元格,然后会有一个带有图标的顶部栏。选择“插入图像”对应的图像图标,然后从本地计算机中选择图像。不过,它似乎不允许您从google drive中进行选择

    enter image description here

        3
  •  1
  •   stackoverflowuser2010    3 年前

    这是一个可以显示来自任何目录的图像文件的函数。

    请注意,此函数生成的结果与 IPython.display.Image 虽然

    from IPython.display import HTML
    from base64 import b64encode
    
    def show_image(path_to_image, width=None, height=None):
    
        mime_type = None
        path_to_image = path_to_image.lower()
    
        # More MIME types:
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
        if path_to_image.endswith('.jpg') or path_to_image.endswith('.jpeg'):
            mime_type = 'image/jpeg'
        elif path_to_image.endswith('.png'):
            mime_type = 'image/png'
        elif path_to_image.endswith('.gif'):
            mime_type = 'image/gif'
        else:
            raise ValueError('Unknown extension: %s' % (path_to_image))
    
        img = open(path_to_image, 'rb').read()
        data_url = 'data:image/jpeg;base64,' + b64encode(img).decode()
    
        width_str = "width='%d'" % (width) if width is not None else ''
        height_str = "height='%d'" % (width) if height is not None else ''
    
        display(HTML("<img src='%s' %s%s>" % (data_url, width_str, height_str)))
    

    示例:

    show_image('frames/frame_1000.jpg', width=300)
    

    enter image description here