Skip to main content

Working with thumbnails

info

The code examples in this article is only documented with the Python API Client. While many concepts still apply for the JavaScript API, implementation details might differ.

Components can be used as thumbnails on various entities, including Project, Task, AssetVersion and User. To create and set a thumbnail you can use the helper method ~ftrack_api.entity.component.CreateThumbnailMixin.create_thumbnail on any entity that can have a thumbnail:

task = session.get('Task', my_task_id)
thumbnail_component = task.create_thumbnail('/path/to/image.jpg')

It is also possible to set an entity thumbnail by setting its thumbnail relation or thumbnail_id attribute to a component you would like to use as a thumbnail. For a component to be usable as a thumbnail, it should

  1. Be a FileComponent.
  2. Exist in the ftrack.server location.
  3. Be of an appropriate resolution and valid file type.

The following example creates a new component in the server location, and uses that as a thumbnail for a task:

task = session.get('Task', my_task_id)
server_location = session.query(
'Location where name is "ftrack.server"'
).one()

thumbnail_component = session.create_component(
'/path/to/image.jpg',
dict(name='thumbnail'),
location=server_location
)
task['thumbnail'] = thumbnail_component
session.commit()

The next example reuses a version's thumbnail for the asset parent thumbnail:

asset_version = session.get('AssetVersion', my_asset_version_id)
asset_parent = asset_version['asset']['parent']
asset_parent['thumbnail_id'] = asset_version['thumbnail_id']
session.commit()

Retrieving thumbnail URL

To get an URL to a thumbnail, thumbnail_component, which can be used used to download or display the image in an interface, use the following:

import ftrack_api.symbol
server_location = session.get('Location', ftrack_api.symbol.SERVER_LOCATION_ID)
thumbnail_url = server_location.get_thumbnail_url(thumbnail_component)
thumbnail_url_tiny = server_location.get_thumbnail_url(
thumbnail_component, size=100
)
thumbnail_url_large = server_location.get_thumbnail_url(
thumbnail_component, size=500
)