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 <l...@larrygritz.com>: > 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 <stef.ker...@gmail.com> > 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 > 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 > >
_______________________________________________ Oiio-dev mailing list Oiio-dev@lists.openimageio.org http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org