Working with thumbnails
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
- Be a FileComponent.
- Exist in the ftrack.server
location
. - 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
)
Read the working with components example