summaryrefslogtreecommitdiff
path: root/texture.py
diff options
context:
space:
mode:
authorTim Keller <tjkeller.xyz>2025-05-25 21:38:37 -0500
committerTim Keller <tjkeller.xyz>2025-05-25 21:38:37 -0500
commite1a6fc09afc088dcb67263ed5923f5be41c32c31 (patch)
treea3f80830180881ed4b55687b0870f83bdc006b2b /texture.py
parent31f1940ec8c4aba6a0c21b20eff9657d5d11cf80 (diff)
downloadimmich-frame-e1a6fc09afc088dcb67263ed5923f5be41c32c31.tar.xz
immich-frame-e1a6fc09afc088dcb67263ed5923f5be41c32c31.zip
use lazy caching texture list to limit number of images loaded at one time
Diffstat (limited to 'texture.py')
-rw-r--r--texture.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/texture.py b/texture.py
index ebd1a49..3a56b5f 100644
--- a/texture.py
+++ b/texture.py
@@ -3,6 +3,7 @@ from OpenGL.GLUT import *
from OpenGL.GLU import *
from PIL import Image, ExifTags
+
class ImageTexture:
def __init__(self, image_source, exif=None):
self.id = None
@@ -13,6 +14,7 @@ class ImageTexture:
self.width = img.width
self.height = img.height
self._img_data = img.tobytes("raw", "RGBA", 0, -1) # Convert image data to bytes
+ self.initialized = True
def gl_init(self):
if self.id:
@@ -26,7 +28,14 @@ class ImageTexture:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
del self._img_data # No longer needed, clear mem
- print(f"Loaded texture {self.id}")
+ #print(f"Loaded texture {self.id}")
+
+ def free(self):
+ if self.id is None:
+ del self._img_data
+ else:
+ glBindTexture(GL_TEXTURE_2D, 0) # Unbind
+ glDeleteTextures([self.id])
@staticmethod
def get_exif(img):
@@ -41,3 +50,18 @@ class ImageTexture:
if orientation == 8: return img.rotate( 90, expand=True)
return img
+
+
+class ImageTextureImmichAsset(ImageTexture):
+ def __init__(self, asset, asset_index):
+ self.initialized = False
+ self.asset_index = asset_index
+ self.asset_key = asset["id"]
+ self.exif = asset.get("exif", None)
+
+ # So that free can work
+ self.id = None
+ self._img_data = None
+
+ def initialize(self, image_source):
+ super().__init__(image_source, self.exif)