Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.
APACHE-2.0 License
Bot releases are hidden (Show)
Published by lgritz over 2 years ago
Published by lgritz over 2 years ago
Note: This is a patch release of an obsolete release family. The currently family
of releases enjoying full support is 2.3.
Published by lgritz over 2 years ago
Published by lgritz over 2 years ago
ImageBufAlgo::st_warp()
(and oiiotool --st_warp
) perform warping ofget_bytes_attribute()
,get_string_attribute()
, but returns the string as a PythonPublished by lgritz over 2 years ago
<uvtile>
(used by Clarisse & V-Ray). #3358Published by lgritz over 2 years ago
wstring
as thePublished by lgritz over 2 years ago
oiiotool --pattern checker
fixed behavior so that if only the checkeroiiotool --point
lets you set individual pixels. #3256ROI.copy()
. #3253'key' in spec
,del spec['key']
, and spec.get('key', defaultval)
to more fully emulatedict
syntax for manipulating metadata. #3252 (2.3.12/2.4.0)clamp()
when the min or max are just a float. NowImageSpec(640, 480, 3, "uint8")
. This is especiallyImagepec::getattribute()
new query token "format"
can retrieve the pixelIBA::make_texture()
: ensure that "maketx:ignore_unassoc" is honored. #3269<UVTILE>
, which is specified byPublished by lgritz over 2 years ago
Published by lgritz almost 3 years ago
BUILD_TESTING
is OFF, don't do any automaticPublished by lgritz almost 3 years ago
Published by lgritz almost 3 years ago
New (non-compatibility-breaking) features:
--cdf
, --cdfsigma
, --sdfbits
, or for IBA::make_texture()
by usingmaketx:cdf
, maketx:cdfsigma
, and maketx:cdfbits
. #3159oiitool --oiioattrib
can set "global" OIIO control attributes forOIIO::attribute()
). #3171oiiotool --repremult
exposes the previously existing IBA::repremult()
.--premult
should be used for one-time conversion--repremult
you want as the last step, because itoiiotool --saturate
and IBA::saturate()
can adjust saturation level of aIBA::noise()
oiiotool --noise
now take "blue" as a noise name, giving a blue noiseIBA::bluenoise_image()
returns a reference to a stored periodicoiiotool -d
now lets you ask for "uint6", "uint4","try_all_readers"
can be set to 0 if you want tooiiotool --maxchan
and --minchan
, and IBA::maxchan()
and minchan()
Bug fixes:
oiiotool --invert
to avoid losing the alpha channel values. #3191Build fixes and developer goodies:
Filesystem::write_binary_file()
utility function. #3199-DTIME_COMMANDS=ON
will print time to compile each moduleCMAKE_BUILD_PARALLEL_LEVEL=1
). #3194Published by lgritz almost 3 years ago
oiiotool --dumpdata:C=name
causes the dumped image data to be formatted-DENABLE_FIELD3D=1
. Note that we expect it to be no longer supported atPublished by lgritz almost 3 years ago
Note: This is an update to the obsolete 2.2 release family. The current
fully-supported release family is 2.3.
Published by lgritz about 3 years ago
oiiotool -ch
now has greatly reduced cost (no useless allocations oroiiotool --runstats
is now much better about correctly attributing I/O-i
instead of to the subsequent operations that triggers the$OPENIMAGEIO_FONTS
and global OIIO attributeround_down_to_multiple()
and improve round_to_multiple()
toPublished by lgritz about 3 years ago
New minimum dependencies and compatibility changes:
New major features and public API changes:
geterror()
in all classes that have one:
geterror()
now takes an optional clear
parameter controls if thetrue
).geterror()
are ensured to have has_error()
.geterror()
appends to the pending error message, if one is alreadygetmessage()
from the same thread that made the read callsubimage()
, nsubimages()
, miplevel()
,nmipevels()
, and file_format_name()
refer to the file that an ImageBufget_extension_map()
returns a map that list all image file formatsget_thumbnail()
set_thumbnail()
to communicate a%(UDIM)d
is the Houdini_u##v##
is for Animal Logic's internal renderer.get_texture_info()/get_image_info()
tois_udim()
, resolve_udim()
,inventory_udim()
that should be helpful for apps dealing with UDIM--pastemeta
takes two images as arguments, and appends all the--chappend
and --siappend
both allow an optional modifier :n=
--fit
now takes an additional optional modifier: fillmode=
withletterbox
(default), width
, and height
. #2784 (2.3.2.0)--autocc
now has an optional modifier :unpremult=1
that causes--colorconvert
but never--list-formats
lists all the image file formats that OIIO knows--skip-bad-frames
causes an error (such as an input file not being{getattribute(name)}
will beOIIO::getattribute(name, ...)
would--missingfile
(which takes a subsequent argument of error
, black
,checker
) determines the behavior when an input image file iserror
matches the old behavior: report an error and terminate allblack
or checker
will continue--printinfo
prints verbose metadata info about the current top--printstats
prints statistics about the current top image on theMETA
, METABRIEF
, and STATS
. #3025 (2.3.6)--mosaic
now takes optional fit=WxH
modifier that lets you set the--fit
on each individually). This is helpful for--histogram
which had been deprecated and undocumented sinceImageInput.read_image()
ImageOutput.write_scanline()
), "half" pixels ended up manglednumpy.float16
type. #2694attribute(name, typedesc, value)
can now be aImageBufAlgo.MakeTxBumpWithSlopes
. #2951 (2.3.4)CUE_THREADS
env variable, if set, is now honored to set the defaultimagebuf.h
no longer includes imagecache.h
.imagebuf.h
, may now need to add an#include <OpenImageIO/imagecache.h>
. #3036 (2.3.7)Makefile
wrapper: We have a 'Makefile' that just wrapsbuild/ARCH
to just build
(and local installs from dist/ARCH
to dist
)Performance improvements:
IBA::to_OpenCV()
, improve efficiency for certain image copies. #2944Fixes and feature enhancements:
IBA::contrast_remap()
fixes bug that could crash for very largeIBA::make_texture()
incorrectly setting tile sizes. #2737IBA::make_texture()
now correctly propagates error messages, whichIBA::fit()
now takes a fillmode
parameter that controls exactlyfit()
documentation for details.IBA::fit()
fixes some slight ringing at image edges when using aociolook()
and ociofiletransform()
internally reversed theinverse
and unpremult
arguments, making it hard toImageBuf::set_write_format()
whenIBA::fillholes_pushpull
did not correctly understand whichIBA::render_text
did not properly account for non-1 alpha ofIBA::colorconvert
, colormatrixtransform
, ociolook
, ociodisplay
,ociofiletransform
have been fixed so that if input is more thanImageBuf::init_spec()
and read()
render_text()
now accepts text strings with embedded linefeeds andchend < chbegin
it should get all channels. #2742 (2.3.0.1/2.2.8)ImageBufAlgo::make_texture()
(as well as maketx
and oiiotool -otex
)half
values to their maximum finite range to prevent very largeInf
when saved as half values. #2891 (2.3.3)IBA::make_texture()
rejects "deep" input images, since they cannotoiiotool -otex
have fixed double printing of error--uvsopes_scale
, or passinguvslopes_scale
(int) to make_texture(). #3012 (2.3.6)ImageHandle*
argument instead of a filename. #3035 (2.3.7)--resize
of images with multi-subimages could crash. #2711 (2.3.0.0)-d
to specify the format). #2717--text
now accepts text strings with embedded linefeeds and-DOIIO_USE_EXR_C_API=ON
will use a new OpenEXR API that we think"raw:user_flip"
#2769 (2.3.1.0)"raw:balance_clamped"
, "raw:apply_scene_linear_scale"
,"raw:camera_to_scene_linear_scale"
#3045 (2.3.7)raw:Demosaic
hint is "none"
. #3045 (2.3.7)Developer goodies / internals:
final
keywords wherever applicable. #2734ColorConfig::OpenColorIO_version_hex()
returns the hex code forfilename_to_regex()
makes a filename "safe" to use as a.
characters).const std::string&
now take astring_view
. #3047 (2.3.7)farmhash::inlined::Hash
now is constexpr and works for Cuda.OIIO_VERSION_GREATER_EQUAL
and OIIO_VERSION_LESS
.inline constexpr
forstd::size()
and std::ssize()
should work with OIIO::span now.std::size()
and std::ssize()
should work with OIIO::string_viewsplits()
and splitsv()
should return no pieces when passedstrhash()
is now constexpr for C++14 and higher. #2843 (2.3.3)getenv()
to take a default if the environment variable is notTypeDesc::basetype_merge(a,b)
returns a BASETYPE having thea
or b
.TypeBox2
, TypeBox3
(forTypeBox2i
and TypeBox3i
for integer or pixel coordintehash()
. #2870 (2.3.3)Build/test system improvements and platform ports:
_d
. (2.3.5)checked_find_package
is now able to be requested to favorbuild_OpenJPEG.bash
script that can convenientlysrc/build_scripts/build_*.bash
scripts now honor an envDEP_DOWNLOAD_ONLY
, which if set will only do thecopysign
sometimes defined as a preprocessor symbolNotable documentation changes:
Published by lgritz about 3 years ago
CUE_THREADS
(used by OpenCue) to set the default sizePublished by lgritz about 3 years ago
At long last, I have branched for this year's big release, OpenImageIO 2.3. The new branch is "dev-2.3" (a change from the old convention of RB-x.y; I think it's clearer since many people didn't know what RB stood for), and the first beta is tagged "v2.3.7.0-beta". Why 2.3.7.0? Because we had 6 "developer preview" snapshots along the way.
I'm aiming for September 1, 2021 to tag a release. It might get delayed if serious problems are discovered. But considering that SPI and probably lots of other places use master branch or developer preview snapshots for real production, for anything other changes made in the last couple weeks, I'm pretty confident that everything is solid and has already been through the heat of battle in production. In general, the only difference between our release branches and master is that release branches make a strict promise about not breaking compatibility; there is little practical difference in stability or production worthiness.
We will strive to make no breaking changes to the API or ABI between now and the release. After final release, when the beta designation disappears, we will be 100% strict about this promise.
We will keep releasing 2.2.x patches as needed, but they will slow down and be restricted to only critical bug fixes, as we transition to 2.3 being the current supported release. Meanwhile, master -- which is now the staging area for what will become 2.4 next year -- is where big new, and possibly compatibility-breaking, changes will be made.
New minimum dependencies and compatibility changes:
New major features and public API changes:
geterror()
in all classes that have one:
geterror()
now takes an optional clear
parameter controls if thetrue
).geterror()
are ensured to have has_error()
.geterror()
appends to the pending error message, if one is alreadygetmessage()
from the same thread that made the read callsubimage()
, nsubimages()
, miplevel()
,nmipevels()
, and file_format_name()
refer to the file that an ImageBufget_extension_map()
returns a map that list all image file formatsget_thumbnail()
set_thumbnail()
to communicate a%(UDIM)d
is the Houdini_u##v##
is for Animal Logic's internal renderer.get_texture_info()/get_image_info()
tois_udim()
, resolve_udim()
,inventory_udim()
that should be helpful for apps dealing with UDIM--pastemeta
takes two images as arguments, and appends all the--chappend
and --siappend
both allow an optional modifier :n=
--fit
now takes an additional optional modifier: fillmode=
withletterbox
(default), width
, and height
. #2784 (2.3.2.0)--autocc
now has an optional modifier :unpremult=1
that causes--colorconvert
but never--list-formats
lists all the image file formats that OIIO knows--skip-bad-frames
causes an error (such as an input file not being{getattribute(name)}
will beOIIO::getattribute(name, ...)
would--missingfile
(which takes a subsequent argument of error
, black
,checker
) determines the behavior when an input image file iserror
matches the old behavior: report an error and terminate allblack
or checker
will continue--printinfo
prints verbose metadata info about the current top--printstats
prints statistics about the current top image on theMETA
, METABRIEF
, and STATS
. #3025 (2.3.6)--mosaic
now takes optional fit=WxH
modifier that lets you set the--fit
on each individually). This is helpful for--histogram
which had been deprecated and undocumented sinceImageInput.read_image()
ImageOutput.write_scanline()
), "half" pixels ended up manglednumpy.float16
type. #2694attribute(name, typedesc, value)
can now be aImageBufAlgo.MakeTxBumpWithSlopes
. #2951 (2.3.4)CUE_THREADS
env variable, if set, is now honored to set the defaultimagebuf.h
no longer includes imagecache.h
.imagebuf.h
, may now need to add an#include <OpenImageIO/imagecache.h>
. #3036 (2.3.7)Makefile
wrapper: We have a 'Makefile' that just wrapsbuild/ARCH
to just build
(and local installs from dist/ARCH
to dist
)Performance improvements:
IBA::to_OpenCV()
, improve efficiency for certain image copies. #2944Fixes and feature enhancements:
IBA::contrast_remap()
fixes bug that could crash for very largeIBA::make_texture()
incorrectly setting tile sizes. #2737IBA::make_texture()
now correctly propagates error messages, whichIBA::fit()
now takes a fillmode
parameter that controls exactlyfit()
documentation for details.IBA::fit()
fixes some slight ringing at image edges when using aociolook()
and ociofiletransform()
internally reversed theinverse
and unpremult
arguments, making it hard toImageBuf::set_write_format()
whenIBA::fillholes_pushpull
did not correctly understand whichIBA::render_text
did not properly account for non-1 alpha ofIBA::colorconvert
, colormatrixtransform
, ociolook
, ociodisplay
,ociofiletransform
have been fixed so that if input is more thanImageBuf::init_spec()
and read()
render_text()
now accepts text strings with embedded linefeeds andchend < chbegin
it should get all channels. #2742 (2.3.0.1/2.2.8)ImageBufAlgo::make_texture()
(as well as maketx
and oiiotool -otex
)half
values to their maximum finite range to prevent very largeInf
when saved as half values. #2891 (2.3.3)IBA::make_texture()
rejects "deep" input images, since they cannotoiiotool -otex
have fixed double printing of error--uvsopes_scale
, or passinguvslopes_scale
(int) to make_texture(). #3012 (2.3.6)ImageHandle*
argument instead of a filename. #3035 (2.3.7)--resize
of images with multi-subimages could crash. #2711 (2.3.0.0)-d
to specify the format). #2717--text
now accepts text strings with embedded linefeeds and-DOIIO_USE_EXR_C_API=ON
will use a new OpenEXR API that we think"raw:user_flip"
#2769 (2.3.1.0)"raw:balance_clamped"
, "raw:apply_scene_linear_scale"
,"raw:camera_to_scene_linear_scale"
#3045 (2.3.7)raw:Demosaic
hint is "none"
. #3045 (2.3.7)Developer goodies / internals:
final
keywords wherever applicable. #2734ColorConfig::OpenColorIO_version_hex()
returns the hex code forfilename_to_regex()
makes a filename "safe" to use as a.
characters).const std::string&
now take astring_view
. #3047 (2.3.7)farmhash::inlined::Hash
now is constexpr and works for Cuda.OIIO_VERSION_GREATER_EQUAL
and OIIO_VERSION_LESS
.inline constexpr
forstd::size()
and std::ssize()
should work with OIIO::span now.std::size()
and std::ssize()
should work with OIIO::string_viewsplits()
and splitsv()
should return no pieces when passedstrhash()
is now constexpr for C++14 and higher. #2843 (2.3.3)getenv()
to take a default if the environment variable is notTypeDesc::basetype_merge(a,b)
returns a BASETYPE having thea
or b
.TypeBox2
, TypeBox3
(forTypeBox2i
and TypeBox3i
for integer or pixel coordintehash()
. #2870 (2.3.3)Build/test system improvements and platform ports:
_d
. (2.3.5)checked_find_package
is now able to be requested to favorbuild_OpenJPEG.bash
script that can convenientlysrc/build_scripts/build_*.bash
scripts now honor an envDOWNLOAD_ONLY
, which if set will only do the downloadscopysign
sometimes defined as a preprocessor symbolNotable documentation changes:
Published by lgritz about 3 years ago
TypeBox2
, TypeBox3
(for float),TypeBox2i
and TypeBox3i
for integer or pixel coordintePublished by lgritz over 3 years ago
%(UDIM)d
is the Houdini_u##v##
is for Animal Logic's internal renderer. #3006make_texture
(and maketx
and oiiotool -otex
) no longer crash if youREQUIRED_DEPS
due to a typo. #3011 (2.2.16)Published by lgritz over 3 years ago