lut-ai / test_cube_generator.py
brestok's picture
Update Dockerfile to optimize application setup and streamline dependencies
642914f
#!/usr/bin/env python3
"""
Utility script to generate a sample .cube file and convert it to base64 for testing the LUT API.
"""
import base64
import json
def create_sample_cube_file(filename: str = "sample.cube", size: int = 8):
"""Create a simple identity LUT cube file for testing"""
with open(filename, 'w') as f:
f.write('TITLE "Sample Identity LUT"\n')
f.write(f'LUT_3D_SIZE {size}\n\n')
for r in range(size):
for g in range(size):
for b in range(size):
red_val = r / (size - 1)
green_val = g / (size - 1)
blue_val = b / (size - 1)
f.write(f'{red_val:.6f} {green_val:.6f} {blue_val:.6f}\n')
print(f"Created sample cube file: {filename}")
return filename
def cube_file_to_base64(cube_file_path: str) -> str:
"""Convert a cube file to base64 string"""
with open(cube_file_path, 'rb') as f:
cube_data = f.read()
base64_string = base64.b64encode(cube_data).decode('utf-8')
return base64_string
def generate_test_request(cube_file_path: str, prompt: str = "Make this LUT more cinematic with cool shadows") -> dict:
"""Generate a complete test request JSON"""
base64_cube = cube_file_to_base64(cube_file_path)
request_data = {
"cube_file_base64": base64_cube,
"user_prompt": prompt
}
return request_data
if __name__ == "__main__":
cube_file = create_sample_cube_file()
test_request = generate_test_request(cube_file)
print(f"\nBase64 encoded cube file:")
print(f"Length: {len(test_request['cube_file_base64'])} characters")
print(f"First 100 chars: {test_request['cube_file_base64'][:100]}...")
with open("test_request.json", "w") as f:
json.dump(test_request, f, indent=2)
print(f"\nSaved complete test request to: test_request.json")
print(f"You can use this to test the API endpoint.")
print(f"\nExample curl command:")
print(f"curl -X POST \"http://localhost:8000/transform-lut\" \\")
print(f" -H \"Content-Type: application/json\" \\")
print(f" -d @test_request.json")