MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/MaterialX / test_load_save

Function test_load_save

python/Scripts/oiio_loader.py:373–426  ·  view source on GitHub ↗

Example usage of the OiioImageLoader class with MaterialX ImageHandler.

()

Source from the content-addressed store, hash-verified

371
372
373def test_load_save():
374 """
375 Example usage of the OiioImageLoader class with MaterialX ImageHandler.
376 """
377 parser = argparse.ArgumentParser(description="MaterialX OIIO Image Handler")
378 parser.add_argument("path", help="Path to the image file")
379 parser.add_argument("--flip", action="store_true", help="Flip the image vertically")
380 parser.add_argument("--preview", action="store_true", help="Preview the image before saving")
381 args = parser.parse_args()
382
383 test_image_path = args.path
384 if not os.path.exists(test_image_path):
385 logger.error(f"Image file not found: {test_image_path}")
386 return
387
388 # Create MaterialX handler with custom OIIO image loader
389 loader = OiioImageLoader()
390 loader.set_preview(args.preview)
391 handler = mx_render.ImageHandler.create(loader)
392 logger.info(f"Created image handler with loader ({loader.get_identifier()}): {handler is not None}")
393 handler.addLoader(loader)
394
395 mx_filepath = mx.FilePath(test_image_path)
396
397 # Load image using handler API
398 logger.info('-'*45)
399 logger.info(f"Loading image from path: {mx_filepath.asString()}")
400 mx_image = handler.acquireImage(mx_filepath)
401 if mx_image:
402 # Q: How to check for failed image load as you
403 # get back a 1x1 pixel image.
404 if mx_image.getWidth() == 1 and mx_image.getHeight() == 1:
405 logger.warning("Failed to load image. Got 1x1 pixel image returned")
406 return
407 logger.info(f"MaterialX Image loaded via Image Handler:")
408 logger.info(f" Dimensions: {mx_image.getWidth()}x{mx_image.getHeight()}")
409 logger.info(f" Channels: {mx_image.getChannelCount()}")
410 logger.info(f" Base type: {mx_image.getBaseType()}")
411
412 # Save image using handler API (to a new file)
413 logger.info('-'*45)
414
415 # Retrieve cached image
416 mx_image = handler.acquireImage(mx_filepath)
417 if mx_image:
418 out_path = mx.FilePath("saved_" + os.path.basename(test_image_path))
419 if handler.saveImage(out_path, mx_image, verticalFlip=args.flip):
420 logger.info(f"MaterialX Image saved to {out_path.asString()}")
421 else:
422 logger.error("Failed to save image.")
423 else:
424 logger.error("Failed to acquire image for saving.")
425 else:
426 logger.error("Failed to load image.")
427
428if __name__ == "__main__":
429 test_load_save()

Callers 1

oiio_loader.pyFile · 0.85

Calls 10

set_previewMethod · 0.95
get_identifierMethod · 0.95
asStringMethod · 0.95
existsMethod · 0.80
errorMethod · 0.80
acquireImageMethod · 0.80
OiioImageLoaderClass · 0.70
createMethod · 0.45
addLoaderMethod · 0.45
saveImageMethod · 0.45

Tested by

no test coverage detected