The OpenEXR libraries (libIlmImf) don't expose any way to change header attributes without writing the whole file.
I can't recall any other image format that makes this easy, either, so OIIO doesn't try to make a way to express it. It sure is a great idea to keep in mind when designing an image file format, though. > On Nov 16, 2017, at 1:20 PM, Deke Kincaid <[email protected]> wrote: > > So I have to actually copy the pixels from all the subimages? I can't simply > inject the metadata in place? That's just very expensive when I have 50 > parts and it uses a lot of ram and can be slow. > > But there's something you do need to be careful about, which is that not all > image formats allow arbitrary metadata to be per-subimage. For EXR in > particular, there are some things that are allowed to vary between parts, and > other things that are not. It isn't a fully general container of arbitrary > images in one file. > > For our renders we only want to inject our maya scene metadata into part 0 > (rgba). We don't want to duplicate the same data across all parts if > possible. > > On Thu, Nov 16, 2017 at 11:01 AM, Larry Gritz <[email protected] > <mailto:[email protected]>> wrote: > Right. The gist is that you have to read the input subimage by subimage, > writing to the output as you go, something like this (pseudocode): > > open input file > create output file > while True : > read image from input (including spec) > break if the read failed because we've run out of subimages > alter spec to add metadata, if you want at this subimage > if this is the first subimage, > open output with the Create mode flag (and altered spec) > else > open output with the AppendSubimage mode flag (and altered spec) > write the output image > input.seek_subimage to the next subimage > break if seek_subimage failed because we're out of subimages > close the files > > > But there's something you do need to be careful about, which is that not all > image formats allow arbitrary metadata to be per-subimage. For EXR in > particular, there are some things that are allowed to vary between parts, and > other things that are not. It isn't a fully general container of arbitrary > images in one file. > > >> On Nov 16, 2017, at 10:51 AM, Andrew Gartner <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hey Deke, >> >> I don't have the exact code handy, but I've managed to do this a few times. >> If memory serves you just need to create imagespecs for each part with the >> proper metadata you want per-part and use the oiio.AppendSubimage with >> ImageOutput after calling open(). >> >> >> outFile = foo.exr >> specs = tuple(...all your image specs with metadata...) >> output = ImageOutput.open(outFile, specsTuple) >> for part in range(1,len(parts)): >> output.open(outFile, outSpecs[part]. oiio.AppendSubimage) >> ....write image/scanlines with your data and the correct index to the >> image spec not sure if you ahve to do a full re-read from the source >> image.... >> >> Hope that helps get you started, if someone else doesn't have exact code. >> >> ~Andrew >> >> On Thu, Nov 16, 2017 at 10:02 AM, Deke Kincaid <[email protected] >> <mailto:[email protected]>> wrote: >> Hi Folks >> >> Does anyone have an example of how to inject metadata with the oiio python >> bindings into a specific part of a multipart EXR?(part 0 for example) We >> keep trying to do this but the output is that all my parts disappear and I >> only have a part 0 in my output image. >> >> _______________________________________________ >> 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] <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
