mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-08-19 17:49:31 +00:00
adding new files
This commit is contained in:
63
python/lowlevel_test_wasm/compress_test.py
Normal file
63
python/lowlevel_test_wasm/compress_test.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user