Open this notebook in Jupyterlite | Download this notebook from GitHub (right-click to download).

import panel as pn


The Image pane embeds any known image format file in panel if provided a local path, or will link to a remote image if provided with a URL.


For details on other options for customizing the component see the layout and styling how-to guides.

  • alt_text (str, default=None): alt text to add to the image tag. The alt text is shown when a user cannot load or display the image.

  • embed (boolean, default=False): If given a URL to an image this determines whether the image will be embedded as base64 or merely linked to.

  • fixed_aspect (boolean, default=True): Whether the aspect ratio of the image should be forced to be equal.

  • link_url (str, default=None): A link URL to make the image clickable and link to some other website.

  • object (str or object): The Image file to display. Can be a string pointing to a local or remote file, or an object with a _repr_extension_ method, where extension is an image file extension.

  • style (dict): Dictionary specifying CSS styles

The Image pane can be pointed at any local or remote image file. If given a URL starting with http or https, the embed parameter determines whether the image will be embedded or linked to:

jpg_pane = pn.pane.Image('')
png_pane = pn.pane.Image('')
webp_pane = pn.pane.Image('')
pn.Column(jpg_pane, png_pane, webp_pane)

We can scale the size of the image by setting a specific fixed width or height:


Alternatively we can scale the width and height using the sizing_mode:

    '', sizing_mode='scale_width'

You can add a caption to the image by using the caption

    '', sizing_mode='scale_width', caption='World Map'

Note that by default the aspect ratio of the image is fixed, and so there may be a gap beside or below the image even in responsive sizing modes. To override this behavior set fixed_aspect=False or provide fixed width and height values.


The Image pane will render any component that defines _repr_[png | jpeg | svg]_ methods including PIL images:

from PIL import Image, ImageDraw

im ='RGB', size=(256, 256))

draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128, width=5)
draw.line((0, im.size[1], im.size[0], 0), fill=128, width=5)
draw.rectangle([(96, 96), (160, 160)], fill=(0, 0, 128), width=10)


Open this notebook in Jupyterlite | Download this notebook from GitHub (right-click to download).