Description
Checklist
- I am using an up-to-date version.
- I have read the documentation.
- I have searched existing issues.
TagStudio Version
Alpha 9.5.1
Operating System & Version
NixOS unstable; Windows 10
Description
When a JPEG-XL image that uses 16-bit float is in a TagStudio library, then the tile for the file doesn't show thumbnail, file type or file name.
Additionally, the sidebar doesn't update when selecting the file, instead keeping its previous state.
This is likely caused by pillow-jxl-plugin not supporting 16-bit float at this point in time and throwing an error instead.
Expected Behavior
The missing thumbnail is expected. However, TagStudio should catch the error and proceed normally like with any other file for which no thumbnail could be generated. This means it should still show file name and type and the sidebar should also work as usual.
Steps to Reproduce
- Add a JPEG-XL image using 16-bit float into a library
- Observe broken state
Logs
Log ouput
2025-03-08 17:36:43 [info ] [FFMPEG] Using FFprobe location: ffprobe
2025-03-08 17:36:43 [info ] [FFMPEG] Using FFmpeg location: ffmpeg
2025-03-08 17:36:43 [info ] [ResourceManager] Resources Registered: count=27
qt.multimedia.symbolsresolver: Couldn't load pipewire-0.3 library
qt.multimedia.symbolsresolver: Couldn't resolve pipewire-0.3 symbols
2025-03-08 17:36:43 [info ] [Config] Config File not specified, using default one filename=/home/user/.config/TagStudio/TagStudio.ini
2025-03-08 17:36:43 [info ] [Config] Thumbnail cache size limit: 500 MB
qt.multimedia.ffmpeg: Using Qt multimedia with FFmpeg version 7.1 GPL version 3 or later
qt.multimedia.ffmpeg: Available HW decoding frameworks:
qt.multimedia.ffmpeg: vaapi
qt.multimedia.ffmpeg: vdpau
qt.multimedia.ffmpeg: vulkan
qt.multimedia.ffmpeg: Available HW encoding frameworks:
qt.multimedia.ffmpeg: vaapi
qt.multimedia.ffmpeg: vdpau
qt.multimedia.ffmpeg: vulkan
2025-03-08 17:36:45 [error ] Path does not exist. open_path=None
2025-03-08 17:36:45 [info ] FFmpeg found: {self.ffmpeg}, FFprobe found: {self.ffprobe}
2025-03-08 17:36:50 [info ] [Library] Opening SQLite Library connection_string=sqlite:////tmp/TestStudio/.TagStudio/ts_library.sqlite library_dir=PosixPath('/tmp/TestStudio')
2025-03-08 17:36:50 [info ] [Library] DB_VERSION: 8
2025-03-08 17:36:50 [info ] [Library] Creating DB tables...
2025-03-08 17:36:50 [info ] Directory scan time duration=0.0051991939544677734 files_not_in_lib=[PosixPath('Test2.jxl')] files_scanned=2 path=PosixPath('/tmp/TestStudio')
2025-03-08 17:36:50 [warning ] [PanelModal] add_callback not implemented for FileExtensionModal
2025-03-08 17:36:50 [info ] finished counting (0 seconds)
2025-03-08 17:36:50 [info ] searching library filter=FilterState(page_index=0, page_size=500, sorting_mode=<SortingModeEnum.DATE_ADDED: 'file.date_added'>, ascending=False, ast=None) query_full="SELECT DISTINCT entries.id, entries.folder_id, entries.path, entries.suffix, entries.date_created, entries.date_modified, entries.date_added \nFROM entries \nWHERE (entries.suffix NOT IN ('.json', '.xmp', '.aae')) ORDER BY entries.id DESC\n LIMIT 500 OFFSET 0"
2025-03-08 17:36:50 [info ] SQL Execution finished (0 seconds)
2025-03-08 17:36:50 [info ] items to render count=1
2025-03-08 17:36:50 [info ] [QtDriver] Loading Entries...
2025-03-08 17:36:50 [info ] [QtDriver] Building Filenames...
2025-03-08 17:36:50 [info ] [QtDriver] Done! Processing ItemThumbs...
2025-03-08 17:36:50 [info ] finished counting (0 seconds)
2025-03-08 17:36:50 [info ] searching library filter=FilterState(page_index=0, page_size=500, sorting_mode=<SortingModeEnum.DATE_ADDED: 'file.date_added'>, ascending=False, ast=None) query_full="SELECT DISTINCT entries.id, entries.folder_id, entries.path, entries.suffix, entries.date_created, entries.date_modified, entries.date_added \nFROM entries \nWHERE (entries.suffix NOT IN ('.json', '.xmp', '.aae')) ORDER BY entries.id DESC\n LIMIT 500 OFFSET 0"
2025-03-08 17:36:50 [info ] SQL Execution finished (0 seconds)
2025-03-08 17:36:50 [info ] items to render count=2
2025-03-08 17:36:50 [info ] [QtDriver] Loading Entries...
2025-03-08 17:36:50 [info ] [QtDriver] Building Filenames...
2025-03-08 17:36:50 [info ] [QtDriver] Done! Processing ItemThumbs...
2025-03-08 17:36:52 [info ] [QtDriver] Selecting Items: append=False bridge=False item_id=2
2025-03-08 17:36:52 [error ] [Preview Panel] Error updating selection error=NotImplementedError('Float16 is not supported yet')
Traceback (most recent call last):
File "/nix/store/dr40dhrzzji70h2ybg5dsdjwy7mz4iaz-TagStudio-9.5.1/lib/python3.12/site-packages/tagstudio/qt/widgets/preview_panel.py", line 152, in update_widgets
stats: dict = self.thumb.update_preview(filepath, ext)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/dr40dhrzzji70h2ybg5dsdjwy7mz4iaz-TagStudio-9.5.1/lib/python3.12/site-packages/tagstudio/qt/widgets/preview/preview_thumb.py", line 353, in update_preview
stats = self._update_image(filepath, ext)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/dr40dhrzzji70h2ybg5dsdjwy7mz4iaz-TagStudio-9.5.1/lib/python3.12/site-packages/tagstudio/qt/widgets/preview/preview_thumb.py", line 213, in _update_image
image = Image.open(str(filepath))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/hdssbyl1xhkvnixwgrqsfcfjg43yrd58-python3.12-pillow-11.1.0/lib/python3.12/site-packages/PIL/Image.py", line 3511, in open
im = _open_core(fp, filename, prefix, formats)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/hdssbyl1xhkvnixwgrqsfcfjg43yrd58-python3.12-pillow-11.1.0/lib/python3.12/site-packages/PIL/Image.py", line 3499, in _open_core
im = factory(fp, filename)
^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/hdssbyl1xhkvnixwgrqsfcfjg43yrd58-python3.12-pillow-11.1.0/lib/python3.12/site-packages/PIL/ImageFile.py", line 144, in __init__
self._open()
File "/nix/store/sxzv3wdk3bbrafdxmb0npzqpclsb4x7b-python3.12-pillow_jxl_plugin-1.3.2/lib/python3.12/site-packages/pillow_jxl/JpegXLImagePlugin.py", line 32, in _open
self.jpeg, self._jxlinfo, self._data, icc_profile = self._decoder(self.fc)
^^^^^^^^^^^^^^^^^^^^^^
NotImplementedError: Float16 is not supported yet
2025-03-08 17:36:55 [info ] [QtDriver] Selecting Items: append=False bridge=False item_id=1
2025-03-08 17:36:55 [warning ] [FieldContainers] Updating Selection entry_id=1
2025-03-08 17:36:55 [info ] [Library] Time it took to get entry: 0.01 seconds with_fields=True with_tags=True
2025-03-08 17:36:55 [info ] [emit_badge_signals] Emitting emit_on_absent=True tag_ids=set()
2025-03-08 17:36:55 [info ] [QtDriver][update_badges] Updating ItemThumb badges add_tags=False badge_values={<BadgeType.ARCHIVED: 'Archived'>: False} origin_id=0
2025-03-08 17:36:55 [info ] [QtDriver][update_badges] Updating ItemThumb badges add_tags=False badge_values={<BadgeType.FAVORITE: 'Favorite'>: False} origin_id=0
2025-03-08 17:49:40 [info ] Closing Library...
2025-03-08 17:49:40 [warning ] [FieldContainers] Updating Selection entry_id=1
2025-03-08 17:49:40 [info ] [Library] Time it took to get entry: 0 seconds with_fields=True with_tags=True
2025-03-08 17:49:40 [info ] [emit_badge_signals] Emitting emit_on_absent=True tag_ids=set()
2025-03-08 17:49:40 [info ] [QtDriver][update_badges] Updating ItemThumb badges add_tags=False badge_values={<BadgeType.ARCHIVED: 'Archived'>: False} origin_id=0
2025-03-08 17:49:40 [info ] [QtDriver][update_badges] Updating ItemThumb badges add_tags=False badge_values={<BadgeType.FAVORITE: 'Favorite'>: False} origin_id=0
2025-03-08 17:49:40 [info ] [SHUTDOWN] Ending Thumbnail Threads...
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
✅ Done