47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import hashlib
|
|
|
|
from PIL import Image
|
|
|
|
|
|
def image_hash(img: Image.Image, length: int = 16):
|
|
hash_sha256 = hashlib.sha256()
|
|
hash_sha256.update(img.tobytes())
|
|
img_hash = hash_sha256.hexdigest()
|
|
if length and length > 0:
|
|
img_hash = img_hash[:length]
|
|
return img_hash
|
|
|
|
|
|
class WebUiComponents:
|
|
txt2img_gallery = None
|
|
img2img_gallery = None
|
|
txt2img_callbacks = []
|
|
img2img_callbacks = []
|
|
|
|
@staticmethod
|
|
def on_txt2img_gallery(callback):
|
|
if WebUiComponents.txt2img_gallery is not None:
|
|
callback(WebUiComponents.txt2img_gallery)
|
|
else:
|
|
WebUiComponents.txt2img_callbacks.append(callback)
|
|
|
|
def on_img2img_gallery(callback):
|
|
if WebUiComponents.img2img_gallery is not None:
|
|
callback(WebUiComponents.img2img_gallery)
|
|
else:
|
|
WebUiComponents.img2img_callbacks.append(callback)
|
|
|
|
@staticmethod
|
|
def register_component(component, **kwargs):
|
|
elem_id = getattr(component, "elem_id", None)
|
|
if elem_id == "txt2img_gallery":
|
|
WebUiComponents.txt2img_gallery = component
|
|
for callback in WebUiComponents.txt2img_callbacks:
|
|
callback(component)
|
|
WebUiComponents.txt2img_callbacks = []
|
|
elif elem_id == "img2img_gallery":
|
|
WebUiComponents.img2img_gallery = component
|
|
for callback in WebUiComponents.img2img_callbacks:
|
|
callback(component)
|
|
WebUiComponents.img2img_callbacks = []
|