No, that's not it. How about: for inParm in spec.extra_attribs: specCopy.attribute (inParam.name, inParam.type, inParam.value)
> On Nov 26, 2019, at 11:52 AM, Larry Gritz <l...@larrygritz.com> wrote: > > Oh, I just realized, another way you can do it right now is that instead of > constructing a ParamValue and adding it to extra_attribs, you can do this: > > for inParm in spec.extra_attribs: > specCopy.attribute (inParam.name, inParam.value) > > >> On Nov 26, 2019, at 8:58 AM, Larry Gritz <l...@larrygritz.com >> <mailto:l...@larrygritz.com>> wrote: >> >> I'm afraid you are right -- at the moment, the python interface only exposes >> ParamValue(name,int), (name,float), and (name,string). It doesn't expose the >> general (name, anything) constructor, so it's probably getting tripped up on >> some compound object. >> >> Maybe as a workaround, it would be easier to use ParamValueList.remove(name) >> to just exclude the specific things you want to eliminate, rather than add >> one by one everything else? >> >> Also, if this is all you're doing from python, you could try from the >> command line with oiiotool using the --eraseattrib command? >> >> -- lg >> >> >>> On Nov 26, 2019, at 5:32 AM, ha...@haggi.de <mailto:ha...@haggi.de> wrote: >>> >>> Hi, >>> >>> we try to get rid of the huge crypto matte headers in exr files and instead >>> load the data from an external file. >>> To eliminate the crypto data I tried to copy the original image spec, clear >>> the extra_attribs and only copy the non crypto data from the origial spec >>> like this: >>> >>> localImage = oiio.ImageInput.open("C:/data/crypto.00090.exr") >>> spec = localImage.spec() >>> specCopy = oiio.ImageSpec(spec) >>> specCopy.extra_attribs.clear() >>> crypto = {} >>> for inParm in spec.extra_attribs: >>> pv = oiio.ParamValue(inParm.name, inParm.value) >>> specCopy.extra_attribs.append(pv) >>> >>> If I try it this way I get an error: >>> >>> # Error: Python argument types in >>> # ParamValue.__init__(ParamValue, str, str) >>> # did not match C++ signature: >>> # __init__(struct _object * __ptr64) >>> # Traceback (most recent call last): >>> # File "<maya console>", line 13, in <module> >>> # ArgumentError: Python argument types in >>> # ParamValue.__init__(ParamValue, str, str) >>> # did not match C++ signature: >>> # __init__(struct _object * __ptr64) # >>> >>> In c++ the ParamValue can be initialized with a string and a value, so I'm >>> a bit confused. What's the correct way to add values to a ParamValueList in >>> python? >>> >>> >>> haggi >>> _______________________________________________ >>> Oiio-dev mailing list >>> Oiio-dev@lists.openimageio.org <mailto:Oiio-dev@lists.openimageio.org> >>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org >>> <http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org> >>> >> >> -- >> Larry Gritz >> l...@larrygritz.com <mailto:l...@larrygritz.com> >> >> >> >> >> _______________________________________________ >> Oiio-dev mailing list >> Oiio-dev@lists.openimageio.org <mailto:Oiio-dev@lists.openimageio.org> >> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org > > -- > Larry Gritz > l...@larrygritz.com <mailto:l...@larrygritz.com> > > > > > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org -- Larry Gritz l...@larrygritz.com
_______________________________________________ Oiio-dev mailing list Oiio-dev@lists.openimageio.org http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org