Skip to main content
App version: 3.4.12

Upload PIL image

To upload a PIL image to Neptune, first save it to disk or as a BytesIO object.

Upload a single image

To upload a single PIL image to an attribute, use the assign_files() function.

PIL image saved under a file name
from PIL import Image


img = Image.fromarray(img_array)
img.save("path/to/image.png")
run.assign_files({"dataset/image_sample": "path/to/image.png"})
PIL image saved as a BytesIO object
from PIL import Image
from io import BytesIO


img = Image.fromarray(img_array)

with BytesIO() as obj:
img.save(obj, format="png")
run.assign_files({"dataset/image_sample": obj.get_value()})

Upload a sequence of images

To upload a sequence of PIL images to an attribute, use the log_files() function.

Upload a sequence of image files
from glob import glob


for idx, file in enumerate(glob("path/to/folder/*.png")):
run.log_files({"dataset/image_samples": file}, step=idx)
Upload a sequence of image arrays
for idx, img in enumerate(list_of_image_arrays):
with BytesIO() as obj:
img = Image.fromarray(img)
img.save(obj, format="png")
run.log_files({"dataset/image_sample": obj.getvalue()}, step=idx)