from raiiaf.file_encoder import file_encoder
from raiiaf.file_decoder import file_decoder
import json
from PIL import Image
import io
raiiaf.file_encoder(
filename="encoded_img.raiiaf", # The .raiiaf extension is required!
latent=latent, # initial latent noise
chunk_records=[],
model_name="Stable Diffusion 3",
model_version="3", # Model Version
prompt="A puppy smiling, cinematic",
tags=["puppy", "dog", "smile"],
img_binary=binary_img_data,
convert_float16=False, # whether to convert input tensors to float16
generation_settings={
"seed": 42,
"steps": 20,
"sampler": "ddim",
"cfg_scale": 7.5,
"scheduler": "pndm",
"eta": 0.0,
"guidance": "classifier-free",
"precision": "fp16",
"deterministic": True
},
hardware_info={
"machine_name": "test_machine",
"os": "linux",
"cpu": "Intel",
"cpu_cores": 8, # minimum 1
"gpu": [{"name": "RTX 3090", "memory_gb": 24, "driver": "nvidia", "cuda_version": "12.1"}],
"ram_gb": 64.0,
"framework": "torch",
"compute_lib": "cuda"
}
)
# Decoding
decoded = raiiaf.file_decoder("encoded_img.raiiaf")
# now to save the metadata
metadata = decoded["metadata"]["raiiaf_metadata"]
# to just get specific metadata blocks
model_info = decoded["metadata"]["raiiaf_metadata"]["model_info"]
# to save decoded metadata to a json file
with open("decoded_metadata.json", "w") as f:
json.dump(decoded["metadata"], f, indent=2)
# to save just the image_binary as png
image_bytes = decoded["chunks"].get("image")
if image_bytes is not None:
img = Image.open(io.BytesIO(image_bytes))
img.save("decoded_image.png")