【问题标题】:How can I open images in a Google Colaboratory notebook cell from uploaded png files?如何从上传的 png 文件中打开 Google Colaboratory 笔记本单元格中的图像?
【发布时间】:2018-09-03 20:24:02
【问题描述】:

我正在使用 Google Colaboratory 笔记本。 我将一个名为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 中一样,它可以工作。

【问题讨论】:

    标签: html image markdown jupyter-notebook google-colaboratory


    【解决方案1】:

    试试这个

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

    你也可以设置宽度和高度

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

    要显示多于 1 个图像,您需要调用 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' />
    

    【讨论】:

    • 像魅力一样工作。谢谢! here 是如何在一个单元格中显示多个图像的方式。
    • 我添加了 2 张图片的示例。
    • 原发帖人想使用降价单元格。我也有同样的问题;建议的解决方案是使用代码单元;我注意到 markdown img 标签适用于 url,但不适用于本地路径;有没有办法为已知导致正确文件的文件路径找到等效的 url? &lt;h2 align="center"&gt;Image&lt;/h2&gt; &lt;img src="https://static1.squarespace.com/static/5150aec6e4b0e340ec52710a/t/51525c33e4b0b3e0d10f77ab/1364352052403/Data_Science_VD.png?format=250w" &gt; 有效,但不适用于 /tmp/image.png 或其他
    • @mrauto 我认为这是不可能的。上传的文件不在公共网络服务器上。您没有用于访问该文件的 IP 或 URL。您可以尝试先将文件发送到其他 Web 服务器,然后在那里获取其 URL。太麻烦了。
    • @korakot-chaovavanich 好的,所以没有网址;有没有办法让它接受一个路径(相对或绝对),比如 IPython“图像”,也许使用一些 IPython 魔法?
    【解决方案2】:

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

    【讨论】:

      【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 2021-04-30
        • 2020-09-10
        • 2019-09-05
        • 2020-12-13
        • 1970-01-01
        • 2017-08-04
        相关资源
        最近更新 更多