blob: 285bb105fedcac8f4e5160684910a0fe557becd6 [file] [log] [blame]
# compress_test.py
from .basisu_wasm import *
# === Load WASM ===
codec = BasisuWasm("basisu_py/wasm/basisu_module_st.wasm")
codec.load()
print("Version =", codec.version())
# === Build test image ===
W, H = 256, 256
BYTES_PER_PIXEL = 4
pitch = W * BYTES_PER_PIXEL
img = bytearray(W * H * 4)
for y in range(H):
for x in range(W):
i = (y * W + x) * 4
img[i + 0] = x & 0xFF # R
img[i + 1] = y & 0xFF # G
img[i + 2] = (x ^ y) & 0xFF # B
img[i + 3] = 255 # A
# === Upload image to WASM memory ===
img_ptr = codec.alloc(len(img))
codec.write_bytes(img_ptr, img)
# === Create comp_params ===
params = codec.new_params()
# === Set image into comp_params ===
ok = codec.set_image_rgba32(params, 0, img_ptr, W, H, pitch)
print("Set image:", ok)
# === Compress ===
ok = codec.compress(
params,
tex_format=BasisTexFormat.cUASTC_LDR_4x4,
quality=100,
effort=BasisEffort.DEFAULT,
flags=BasisFlags.KTX2_OUTPUT | BasisFlags.SRGB,
rdo_quality=0.0
)
print("Compress result:", ok)
# === Retrieve compressed blob ===
ofs = codec.get_comp_data_ofs(params)
size = codec.get_comp_data_size(params)
print("Output size =", size)
comp_data = codec.read_bytes(ofs, size)
print("First 16 bytes:", comp_data[:16])
# === Save to KTX2 ===
with open("test.ktx2", "wb") as f:
f.write(comp_data)
print("File written: test.ktx2")
# === Cleanup ===
codec.delete_params(params)
codec.free(img_ptr)