From 174262b9b3678b73b2a26ec6d3c66082456d7256 Mon Sep 17 00:00:00 2001 From: purpletennisball <212221402+purpletennisball@users.noreply.github.com> Date: Sun, 19 Jul 2026 22:16:39 -0400 Subject: [PATCH] feat(thumbs): render .ai thumbnails (#1453) --- src/tagstudio/core/media_types.py | 3 ++- src/tagstudio/qt/previews/renderer.py | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/tagstudio/core/media_types.py b/src/tagstudio/core/media_types.py index 12f6ae8a..83105755 100644 --- a/src/tagstudio/core/media_types.py +++ b/src/tagstudio/core/media_types.py @@ -105,6 +105,7 @@ class MediaCategories: # These sets are used either individually or together to form the final sets # for the MediaCategory(s). # These sets may be combined and are NOT 1:1 with the final categories. + _ADOBE_ILLUSTRATOR_SET: set[str] = {".ai"} _ADOBE_PHOTOSHOP_SET: set[str] = { ".pdd", ".psb", @@ -580,7 +581,7 @@ class MediaCategories: ) PDF_TYPES = MediaCategory( media_type=MediaType.PDF, - extensions=_PDF_SET, + extensions=_PDF_SET | _ADOBE_ILLUSTRATOR_SET, is_iana=False, name="pdf", ) diff --git a/src/tagstudio/qt/previews/renderer.py b/src/tagstudio/qt/previews/renderer.py index f1e7ba34..4a0625af 100644 --- a/src/tagstudio/qt/previews/renderer.py +++ b/src/tagstudio/qt/previews/renderer.py @@ -1295,11 +1295,12 @@ class ThumbRenderer(QObject): return im @staticmethod - def _pdf_thumb(filepath: Path, size: int) -> Image.Image | None: - """Render a thumbnail for a PDF file. + def _pdf_thumb(filepath: Path, size: int, ext: str) -> Image.Image | None: + """Render a thumbnail for a PDF or Adobe Illustator file. filepath (Path): The path of the file. size (int): The size of the icon. + ext (str): The file extension. """ im: Image.Image | None = None @@ -1321,7 +1322,7 @@ class ThumbRenderer(QObject): else: page_size *= size / page_size.width() # Enlarge image for anti-aliasing - scale_factor = 2.5 + scale_factor = 2.5 if ext in {".pdf"} else 1 page_size *= scale_factor # Render image with no anti-aliasing for speed render_options: QPdfDocumentRenderOptions = QPdfDocumentRenderOptions() @@ -1910,7 +1911,7 @@ class ThumbRenderer(QObject): elif MediaCategories.is_ext_in_category( ext, MediaCategories.PDF_TYPES, mime_fallback=True ): - image = self._pdf_thumb(_filepath, adj_size) + image = self._pdf_thumb(_filepath, adj_size, ext) # Archives ===================================================== elif MediaCategories.is_ext_in_category(ext, MediaCategories.ARCHIVE_TYPES): image = self._archive_thumb(_filepath, ext)