From a244098f8e1cf630ac509028836318743df6cf7d Mon Sep 17 00:00:00 2001 From: Travis Abendshien Date: Tue, 20 Aug 2024 23:44:03 -0700 Subject: [PATCH] refactor: remove edge from `four_corner_gradient()` --- tagstudio/src/qt/helpers/gradient.py | 38 ++++++++++++---------- tagstudio/src/qt/widgets/thumb_renderer.py | 7 ++-- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/tagstudio/src/qt/helpers/gradient.py b/tagstudio/src/qt/helpers/gradient.py index b76844a0..c109e5d5 100644 --- a/tagstudio/src/qt/helpers/gradient.py +++ b/tagstudio/src/qt/helpers/gradient.py @@ -2,21 +2,21 @@ # Licensed under the GPL-3.0 License. # Created for TagStudio: https://github.com/CyanVoxel/TagStudio -from PIL import Image, ImageEnhance, ImageChops +from PIL import Image -def four_corner_gradient_background( - image: Image.Image, adj_size, mask, hl +def four_corner_gradient( + image: Image.Image, size: tuple[int, int], mask: Image.Image ) -> Image.Image: - if image.size != (adj_size, adj_size): + if image.size != size: # Old 1 color method. # bg_col = image.copy().resize((1, 1)).getpixel((0,0)) - # bg = Image.new(mode='RGB',size=(adj_size,adj_size),color=bg_col) + # bg = Image.new(mode='RGB',size=size,color=bg_col) # bg.thumbnail((1, 1)) - # bg = bg.resize((adj_size,adj_size), resample=Image.Resampling.NEAREST) + # bg = bg.resize(size, resample=Image.Resampling.NEAREST) # Small gradient background. Looks decent, and is only a one-liner. - # bg = image.copy().resize((2, 2), resample=Image.Resampling.BILINEAR).resize((adj_size,adj_size),resample=Image.Resampling.BILINEAR) + # bg = image.copy().resize((2, 2), resample=Image.Resampling.BILINEAR).resize(size,resample=Image.Resampling.BILINEAR) # Four-Corner Gradient Background. # Not exactly a one-liner, but it's (subjectively) really cool. @@ -29,29 +29,31 @@ def four_corner_gradient_background( bg.paste(tr, (1, 0, 2, 2)) bg.paste(bl, (0, 1, 2, 2)) bg.paste(br, (1, 1, 2, 2)) - bg = bg.resize((adj_size, adj_size), resample=Image.Resampling.BICUBIC) - + bg = bg.resize(size, resample=Image.Resampling.BICUBIC) bg.paste( image, box=( - (adj_size - image.size[0]) // 2, - (adj_size - image.size[1]) // 2, + (size[0] - image.size[0]) // 2, + (size[1] - image.size[1]) // 2, ), ) - bg.putalpha(mask) - final = bg + final = Image.new("RGBA", bg.size, (0, 0, 0, 0)) + final.paste(bg, mask=mask.getchannel(0)) + + # bg.putalpha(mask) + # final = bg else: - image.putalpha(mask) - final = image + # image.putalpha(mask) + # final = image + + final = Image.new("RGBA", size, (0, 0, 0, 0)) + final.paste(image, mask=mask.getchannel(0)) if final.mode != "RGBA": final = final.convert("RGBA") - hl_soft = hl.copy() - hl_soft.putalpha(ImageEnhance.Brightness(hl.getchannel(3)).enhance(0.5)) - final.paste(ImageChops.soft_light(final, hl_soft), mask=hl_soft.getchannel(3)) return final diff --git a/tagstudio/src/qt/widgets/thumb_renderer.py b/tagstudio/src/qt/widgets/thumb_renderer.py index ffa577ed..c8d49ce7 100644 --- a/tagstudio/src/qt/widgets/thumb_renderer.py +++ b/tagstudio/src/qt/widgets/thumb_renderer.py @@ -35,7 +35,7 @@ from src.core.utils.encoding import detect_char_encoding from src.qt.helpers.blender_thumbnailer import blend_thumb from src.qt.helpers.color_overlay import theme_fg_overlay from src.qt.helpers.file_tester import is_readable_video -from src.qt.helpers.gradient import four_corner_gradient_background +from src.qt.helpers.gradient import four_corner_gradient from src.qt.helpers.text_wrapper import wrap_full_text from src.qt.resource_manager import ResourceManager @@ -119,6 +119,7 @@ class ThumbRenderer(QObject): Returns a thumbnail raised edge graphic given a size and pixel ratio. If one is not already cached, then a new one will be rendered. """ + logging.info((*size, pixel_ratio)) item: tuple[Image.Image, Image.Image] = self.raised_edges.get( (*size, pixel_ratio) ) @@ -893,9 +894,7 @@ class ThumbRenderer(QObject): (adj_size, adj_size), pixel_ratio ) final = self._apply_edge( - four_corner_gradient_background( - image, (adj_size, adj_size), mask - ), + four_corner_gradient(image, (adj_size, adj_size), mask), edge, ) else: