This gives me an idea for how to make this easier on the next person to come 
across it: I will rig it so that ImageBuf.write() will automatically invalidate 
the file in the ImageCache.

        -- lg


> On Apr 12, 2018, at 4:53 AM, Stéphane Bertrand <[email protected]> wrote:
> 
> Thanks for yours helpfulls answers
> 
> Will: in fact, i can convert without delete source image, but isn't my 
> objectif.
> I've 17To of datas for my left eyes, i need the same for my right eyes, and 
> i've only ...... 20To
> I'm not fan ( and a little stress) to work directely on rendering source 
> pictures, but i don"t have choice (mistake in rendering parameters )
> 
> Larry have THE solution, thx.
> in python, i can't directely  instantiated from python :
> oiio.ImageCache().invalidate (DIR_PATH+IN_FILE) return  "RuntimeError: This 
> class cannot be instantiated from Python"
> 
> but if i declare it before on startup :
> IMG_CACHE = oiio.ImageCache.create(True)
> and
> IMG_CACHE.invalidate(in_file)
> 
> the file is release and i can delete it ( HAPPY)
> 
> thx a lot, i can run my script this weekend and win free space
> 
> Stephane
> 
> 
> 
> 2018-04-11 18:44 GMT+02:00 Larry Gritz <[email protected] 
> <mailto:[email protected]>>:
> Where does the error occur? On the call to rename?
> 
> I think that what's happening is that your ImageBuf is backed by an 
> ImageCache, which is holding the file open. That's my current hypothesis 
> anyway.
> 
> I have two suggestions, either one might work:
> 
> 1. Read the file explicitly, and use the 'force' parameter to read it fully 
> without being backed by an ImageCache.
> 
>     img = oiio.ImageBuf(DIR_PATH+IN_FILE)
>     img.read (force=True)
> 
> 2. Tell the ImageCache to close and release the file by invalidating it:
> 
>     write_image(img, DIR_PATH+out_file)
>     oiio.ImageCache().invalidate (DIR_PATH+IN_FILE)
> 
> (Note: the default ImageCache() constructor will retrieve the "shared" one.)
> 
> 
> 
>> On Apr 11, 2018, at 7:39 AM, Stéphane Bertrand <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> hi all,
>> 
>> i've this simple script, inpire by snippet in the docs :
>> 
>> import os
>> import OpenImageIO as oiio
>> 
>> 
>> DIR_PATH = r"D:\Seq02\Scn01\Shot01\Left\pass\Decor\\"
>> IN_FILE = "Seq02_Scn01_Shot01_Decor_0000.exr"
>> 
>> 
>> ext = IN_FILE.rfind(".")
>> out_file = IN_FILE[:ext]+ ".tmp" + IN_FILE[ext:]
>> 
>> 
>> def write_image (image, filename, format=oiio.UNKNOWN) :
>>      if not image.has_error :
>>              image.set_write_format (format)
>>              image.write (filename)
>>      if image.has_error :
>>              print("Error writing", filename, ":", image.geterror())
>> 
>> img = oiio.ImageBuf(DIR_PATH+IN_FILE)
>> img.specmod().attribute("compression", "dwaa")
>> write_image(img, DIR_PATH+out_file)
>> 
>> os.remove(DIR_PATH+IN_FILE)
>> os.rename(DIR_PATH+out_file, DIR_PATH+IN_FILE)
>> 
>> it's a simple script for inplace convert with dwa compression a EXR file
>> but i've a PermissionError, my own process have hands on my file
>> i'll try to add 
>> img.reset(oiio.ImageSpec())
>> for free my image
>> but not
>> 
>> thx for your help
>> Stéphane
>> 
>> 
>> _______________________________________________
>> Oiio-dev mailing list
>> [email protected] <mailto:[email protected]>
>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org 
>> <http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org>
> 
> --
> Larry Gritz
> [email protected] <mailto:[email protected]>
> 
> 
> 
> 
> 
> _______________________________________________
> Oiio-dev mailing list
> [email protected] <mailto:[email protected]>
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org 
> <http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org>
> 
> 
> _______________________________________________
> Oiio-dev mailing list
> [email protected]
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

--
Larry Gritz
[email protected]




_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to