refac: tui.images: Optimize image class selection
- Change: Execute image class selection logic once and cache the result.
This commit is contained in:
parent
efab6cf556
commit
b264927da9
|
@ -11,6 +11,7 @@ try:
|
|||
from PIL import Image, ImageDraw
|
||||
|
||||
_IMAGE_PIXEL_FORMATS = frozenset({'kitty', 'iterm'})
|
||||
_ImageCls = None
|
||||
|
||||
TuiScreen = UrwidImageScreen
|
||||
disable_queries()
|
||||
|
@ -23,13 +24,20 @@ try:
|
|||
|
||||
def get_base_image(image, image_format) -> BaseImage:
|
||||
# we don't autodetect kitty, iterm; we choose based on option switches
|
||||
BaseImage.forced_support = True
|
||||
if image_format == 'kitty':
|
||||
return KittyImage(image)
|
||||
elif image_format == 'iterm':
|
||||
return ITerm2Image(image)
|
||||
else:
|
||||
return BlockImage(image)
|
||||
|
||||
global _ImageCls
|
||||
|
||||
if not _ImageCls:
|
||||
BaseImage.forced_support = True
|
||||
_ImageCls = (
|
||||
KittyImage
|
||||
if image_format == 'kitty'
|
||||
else ITerm2Image
|
||||
if image_format == 'iterm'
|
||||
else BlockImage
|
||||
)
|
||||
|
||||
return _ImageCls(image)
|
||||
|
||||
def resize_image(basewidth: int, baseheight: int, img: Image.Image) -> Image.Image:
|
||||
if baseheight and not basewidth:
|
||||
|
|
Loading…
Reference in New Issue