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> 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
>> 
> 
> --
> 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

Reply via email to