def get_oiio_extensions(): """Returns a list of extensions accepted by OpenImageIO. """ v = OpenImageIO.get_string_attribute('extension_list') extensions = [] for e in [f.split(':')[1] for f in v.split(';')]: extensions += e.split(',') return sorted(extensions)
def oiioSupportsRaw(): ''' Check to see if raw files can be loaded natively ''' # Check to see if the raw plugin has been loaded format_list = oiio.get_string_attribute("format_list").split(',') raw_plugin_present = 'raw' in format_list # Check to see if version is above when raw reading was fixed version_great_enough = oiio.VERSION >= 10707 return (raw_plugin_present and version_great_enough)
def oiioSupportsRaw(): ''' Check to see if raw files can be loaded natively ''' # Check to see if the raw plugin has been loaded format_list = oiio.get_string_attribute( "format_list" ).split(',') raw_plugin_present = 'raw' in format_list # Check to see if version is above when raw reading was fixed # Update this version number to reflect when the functionality is fixed version_great_enough = oiio.VERSION >= 10707 return (raw_plugin_present and version_great_enough)
def get_oiio_namefilters(): """Gets all accepted formats from the oiio build as a namefilter list. Use the return value on the QFileDialog.setNameFilters() method. """ extension_list = OpenImageIO.get_string_attribute("extension_list") namefilters = [] arr = [] for exts in extension_list.split(u';'): exts = exts.split(u':') _exts = exts[1].split(u',') e = [u'*.{}'.format(f) for f in _exts] namefilter = u'{} files ({})'.format(exts[0].upper(), u' '.join(e)) namefilters.append(namefilter) for _e in _exts: arr.append(_e) allfiles = [u'*.{}'.format(f) for f in arr] allfiles = u' '.join(allfiles) allfiles = u'All files ({})'.format(allfiles) namefilters.insert(0, allfiles) return u';;'.join(namefilters)
import os import shutil import OpenImageIO as oiio # Test OpenEXR's collection of damaged and broken images, to be sure # we detect the damage and issue errors (not crash, etc). failureok = True # Save error output, too, and skip lines to make readable redirect = ' >> out.txt 2>&1 ' # Figure out the version of openexr openexr_version = 0 liblist = oiio.get_string_attribute("library_list").split(';') for lib in liblist: lib_ver = lib.split(':') if lib_ver[0] == 'openexr': ver = lib_ver[1].split(' ')[-1].split('.') openexr_version = int(ver[0]) * 10000 + int(ver[1]) * 100 + int(ver[2]) print(openexr_version) # ../openexr-images/Damaged: # README t03.exr t06.exr t09.exr t12.exr t15.exr # t01.exr t04.exr t07.exr t10.exr t13.exr t16.exr # t02.exr t05.exr t08.exr t11.exr t14.exr imagedir = OIIO_TESTSUITE_IMAGEDIR + "/Damaged" files = [ "asan_heap-oob_4cb169_255_cc7ac9cde4b8634b31cb41c8fe89b92d_exr", "asan_heap-oob_504235_131_78b0e15388401193e1ee2ce20fb7f3b0_exr",
print () print ("extra_attribs size is", len(s.extra_attribs)) for i in range(len(s.extra_attribs)) : print (i, s.extra_attribs[i].name, s.extra_attribs[i].type, s.extra_attribs[i].value) print (s.metadata_val (s.extra_attribs[i], True)) print () print ("seralize(xml):") print (s.serialize("xml")) print ("serialize(text, human):") print (s.serialize("text", "detailedhuman")) # test initialization from ROI print ("Testing construction from ROI:") sroi = oiio.ImageSpec (oiio.ROI(0,640,0,480,0,1,0,3), oiio.FLOAT); print_imagespec (sroi) # Also test global OIIO functions here print ("\nTesting global attribute store/retrieve:") oiio.attribute ("plugin_searchpath", "perfect") print ("get_string_attribute plugin_searchpath : ", oiio.get_string_attribute ("plugin_searchpath", "bad")) print ("get_int_attribute plugin_searchpath : ", oiio.get_int_attribute ("plugin_searchpath", 0)) print ("getattribute TypeString plugin_searchpath : ", oiio.getattribute ("plugin_searchpath", oiio.TypeDesc.TypeString)) print ("getattribute TypeFloat plugin_searchpath : ", oiio.getattribute ("plugin_searchpath", oiio.TypeDesc.TypeFloat)) print ("getattribute TypeString blahblah : ", oiio.getattribute ("blahblah", oiio.TypeDesc.TypeString)) print ("Done.") except Exception as detail: print ("Unknown exception:", detail)
print "getattribute('foo_str') retrieves", s.getattribute("foo_str") print "getattribute('foo_vector') retrieves", s.getattribute("foo_vector") print "getattribute('foo_matrix') retrieves", s.getattribute("foo_matrix") print "getattribute('foo_no') retrieves", s.getattribute("foo_no") print print "extra_attribs size is", len(s.extra_attribs) for i in range(len(s.extra_attribs)) : print i, s.extra_attribs[i].name, s.extra_attribs[i].type, s.extra_attribs[i].value print s.metadata_val (s.extra_attribs[i], True) print # test initialization from ROI print ("Testing construction from ROI:") sroi = oiio.ImageSpec (oiio.ROI(0,640,0,480,0,1,0,3), oiio.FLOAT); print_imagespec (sroi) # Also test global OIIO functions here print "\nTesting global attribute store/retrieve:" oiio.attribute ("plugin_searchpath", "perfect") print "get_string_attribute plugin_searchpath : ", oiio.get_string_attribute ("plugin_searchpath", "bad") print "get_int_attribute plugin_searchpath : ", oiio.get_int_attribute ("plugin_searchpath", 0) print "getattribute TypeString plugin_searchpath : ", oiio.getattribute ("plugin_searchpath", oiio.TypeDesc.TypeString) print "getattribute TypeFloat plugin_searchpath : ", oiio.getattribute ("plugin_searchpath", oiio.TypeDesc.TypeFloat) print "getattribute TypeString blahblah : ", oiio.getattribute ("blahblah", oiio.TypeDesc.TypeString) print "Done." except Exception as detail: print "Unknown exception:", detail
print() s.attribute("dog", "Spot") print("Added dog: ", s.getattribute("dog")) s.erase_attribute("dog") print("After erasing dog, dog = ", s.getattribute("dog")) print() # test initialization from ROI print("Testing construction from ROI:") sroi = oiio.ImageSpec(oiio.ROI(0, 640, 0, 480, 0, 1, 0, 3), oiio.FLOAT) print_imagespec(sroi) # Also test global OIIO functions here print("\nTesting global attribute store/retrieve:") oiio.attribute("plugin_searchpath", "perfect") print("get_string_attribute plugin_searchpath : ", oiio.get_string_attribute("plugin_searchpath", "bad")) print("get_int_attribute plugin_searchpath : ", oiio.get_int_attribute("plugin_searchpath", 0)) print("getattribute TypeString plugin_searchpath : ", oiio.getattribute("plugin_searchpath", oiio.TypeDesc.TypeString)) print("getattribute TypeFloat plugin_searchpath : ", oiio.getattribute("plugin_searchpath", oiio.TypeDesc.TypeFloat)) print("getattribute TypeString blahblah : ", oiio.getattribute("blahblah", oiio.TypeDesc.TypeString)) print("Done.") except Exception as detail: print("Unknown exception:", detail)
def add_add_file_menu(self, menu_set): add_pixmap = images.ImageCache.get_rsc_pixmap( u'add', common.ADD, common.MARGIN()) @QtCore.Slot(unicode) def accepted(source): """Create an empty, placeholder file.""" with open(os.path.normpath(source), 'a') as f: f.write('Bookmarks template file.') @QtCore.Slot(unicode) def show_widget(ext): from . import addfile widget = addfile.AddFileWidget(ext) widget.fileSaveRequested.connect(accepted) widget.fileSaveRequested.connect(self.parent().new_file_added) widget.open() menu_set[u'separator1'] = {} k = u'addfiles' menu_set[k] = collections.OrderedDict() menu_set[u'addfiles:icon'] = add_pixmap menu_set[u'addfiles:text'] = u'Add new file...' menu_set[k][u'scene'] = collections.OrderedDict() menu_set[k][u'scene:icon'] = add_pixmap menu_set[k][u'scene:text'] = u'Scene formats' menu_set[k][u'scene'][u'scenes'] = { u'disabled': True, u'text': u'Scenes' } menu_set[k][u'export'] = collections.OrderedDict() menu_set[k][u'export:icon'] = add_pixmap menu_set[k][u'export:text'] = u'Export formats' menu_set[k][u'export'][u'exports'] = { u'disabled': True, u'text': u'Exports' } menu_set[k][u'Adobe'] = collections.OrderedDict() menu_set[k][u'Adobe:icon'] = add_pixmap menu_set[k][u'Adobe:text'] = u'Adobe formats' menu_set[k][u'Adobe'][u'Adobe'] = { u'disabled': True, u'text': u'Adobe Creative Cloud' } menu_set[k][u'OpenImageIO'] = collections.OrderedDict() menu_set[k][u'OpenImageIO:icon'] = add_pixmap menu_set[k][u'OpenImageIO:text'] = u'OpenImageIO formats' menu_set[k][u'OpenImageIO'][u'OpenImageIO'] = { u'disabled': True, u'text': u'OpenImageIO formats' } menu_set[k][u'Misc'] = collections.OrderedDict() menu_set[k][u'Misc:icon'] = add_pixmap menu_set[k][u'Misc:text'] = u'Add other template...' menu_set[k][u'Misc'][u'Misc'] = { u'disabled': True, u'text': u'Misc formats' } for f in defaultpaths.get_extensions(defaultpaths.SceneFilter): pixmap = images.ImageCache.get_rsc_pixmap( f, None, common.MARGIN()) menu_set[k][u'scene'][f] = { u'icon': pixmap, u'text': f.upper(), u'action': functools.partial(show_widget, f) } for f in defaultpaths.get_extensions(defaultpaths.ExportFilter): pixmap = images.ImageCache.get_rsc_pixmap( f, None, common.MARGIN()) menu_set[k][u'export'][f] = { u'icon': pixmap, u'text': f.upper(), u'action': functools.partial(show_widget, f) } for f in defaultpaths.get_extensions(defaultpaths.AdobeFilter): pixmap = images.ImageCache.get_rsc_pixmap( f, None, common.MARGIN()) menu_set[k][u'Adobe'][f] = { u'icon': pixmap, u'text': f.upper(), u'action': functools.partial(show_widget, f) } exts = OpenImageIO.get_string_attribute("extension_list").split(';') exts = [f.split(':')[1].split(',') for f in exts] exts = sorted(list(set([ext for sublist in exts for ext in sublist]))) for f in exts: pixmap = images.ImageCache.get_rsc_pixmap( f, None, common.MARGIN()) menu_set[k][u'OpenImageIO'][f] = { u'icon': pixmap, u'text': f.upper(), u'action': functools.partial(show_widget, f) } for f in defaultpaths.get_extensions(defaultpaths.MiscFilter): pixmap = images.ImageCache.get_rsc_pixmap( f, None, common.MARGIN()) menu_set[k][u'Misc'][f] = { u'icon': pixmap, u'text': f.upper(), u'action': functools.partial(show_widget, f) } return menu_set
SceneFormat, 'value': common.sort_words( 'aep, ai, eps, fla, ppj, prproj, psb, psd, psq, xfl, c4d, hud, ' 'hip, hiplc, hipnc, ma, mb, nk, nk~,spm, mocha, rv, tvpp'), 'description': 'Scene file formats' }, 1: { 'name': 'Image Formats', 'flag': ImageFormat, 'value': common.sort_words( OpenImageIO.get_string_attribute('extension_list')), 'description': 'Image file formats' }, 2: { 'name': 'Cache Formats', 'flag': CacheFormat, 'value': common.sort_words( 'abc, ass, bgeo, fbx, geo, ifd, obj, rs, sc, sim, vdb, usd, usda, ' 'usdc, usdz'), 'description': 'CG cache formats' },
ExportFilter = 0b00100000 MiscFilter = 0b00010000 AdobeFilter = 0b00001000 FORMAT_FILTERS = { SceneFilter: { u'name': u'SceneFilter', u'description': u'Scene file formats', u'default': sort(u'c4d,hud,hip,hiplc,hipnc,ma,mb,nk,nk~,spm,mocha,rv,'), u'value': None, }, OpenImageIOFilter: { u'name': u'OpenImageIOFilter', u'description': u'Image formats understood by OpenImageIO', u'default': sort(OpenImageIO.get_string_attribute(u'extension_list')), u'value': None, }, ExportFilter: { u'name': u'ExportFilter', u'description': u'CG cache formats', u'default': sort(u'abc,ass,bgeo,fbx,geo,ifd,obj,rs,sc,sim,vdb,usd,usda,usdc,usdz'), u'value': None, }, MiscFilter: { u'name': u'MiscFilter', u'description': u'Miscellaneous file formats',