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

Reply via email to