diff options
Diffstat (limited to 'texture.py')
| -rw-r--r-- | texture.py | 26 |
1 files changed, 25 insertions, 1 deletions
@@ -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) |
