Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.
NONFINITE_COUNT
that returns the number of nonfinite values in the image, thus allowing decision making about fixnan #4171
--buildinfo
command prints build information,
including version, compiler, and all library dependencies. #4124
GAMMA
env variable is not set #4118
?
character. #4085 (by AdamMainsTL)Note that this is a release on an obsolete branch. The currently fully-supported release branch is 2.5, and we recommend that if at all possible. This patch release to 2.4 is meant for people who need these fixes are aren't able to update to 2.5 yet.
fmt
library minimum is 7.0 (raised from 6.1)
#3973 (2.5.3.0)colortransformid
,
which supplies an integer ID for a requested color space transformation
to be applied as texture tiles are read. The default value 0 means no
transformation because the texture is presumed to be in the working
color space (this is the old behavior, and most performant). Tiles from
the same texture file but using different color transformations are
allowed and will not interfere with each other in the cache.TextureSystem::get_colortransform_id(from, to)
maps from/to named
color spaces to a color transform ID that can be passed to texture
lookup calls.ImageCache::get_image_handle
and TextureSystem::get_texture_handle
now take an optional TextureOpt*
parameter that can supply additional
constraints (such as color transformation) that TS/IC implementations
may wish to split into separate handles. This is currently not used, but
is reserved so that the API doesn't need to be changed if we use it in
the future.OIIO_TEXTURESYSTEM_SUPPORTS_COLORSPACE
that
can be tested for existence to know if the new fields are in the
TextureOpt structure.ocio://default
, which will automatically be
usd if no config is specified and the $OCIO
variable is not set #3662
#3707 (2.5.0.0)getAliases()
#3662; isColorSpaceLinear()
#3662; resolve(name)
turns any color space name, alias, role, or OIIO
name (like "sRGB") into a canonical color space name;
equivalent(n1,n2)
returns true if it can tell that the two names
refer, ultimately, to equivalent color spaces #3707 (2.5.0.0)ImageSpec::set_colorspace()
method is a more thorough way to set
the color space data than simply setting the "oiio:ColorSpace" metadata
(though it also does that). #3734 (2.5.0.1)ColorConfig::getColorSpaceIndex()
looks up a color space index by
its name, alias, or role. #3758 (2.5.0.1)--iccread
and --iccwrite
add an ICC profile from an external
file to the metadata of an image, or extract the ICC profile metadata
and save it as a separate file. #3550 (2.5.0.0)--parallel-frames
parallelizes execution over a frame range rather
than over regions within each image operation. This should be used with
caution, as it will give incorrect results for an oiiotool command line
involving a frame range where the iterations have a data dependency on
each other and must be executed in order. But in cases where the order
of frame processing doesn't matter and there are many more frames in the
sequence than cores, you can get a substantial performance improvement
using this flag. #3849 (2.5.2.0)--no-error-exit
causes an error to not exit immediately, but
rather to try to execute the remaining command line operations. This is
intended primarily for unit tests and debugging. #3643 (2.5.0.0)--colorconfiginfo
prints the full inventory of color management
information, including color space aliases, roles, and with improved
readability of output for larger configs. #3707 (2.5.0.0)--resize
command takes new optional :from=
, :to=
, and
:edgeclamp=
modifiers to give more general and fine control over the
specific correspondence between display windows in the input image and
resized destination image (including allowing partial pixel offsets).
#3751 #3752 (2.5.0.1){TOP[foo]}
is similar to the
existing {TOP.foo}
, if there is no foo
metadata found, the
former evaluates to an empty string, whereas the latter is an error.
#3619 (2.4.5/2.5.0.0){NIMAGES}
gives current stack depth
#3822 (2.5.2.0){nativeformat}
is the pixel data format of the file, whereas the
existing format
has always returned the data type used in memory.
Also, METANATIVE
and METANATIVEBRIEF
are the full metadata
keywords for native file metadata, comapred to the previously
existing META
and METABRIEF
which we now clarify reflect the
in-memory representation. #3639 (2.5.0.0)--ociodisplay
now takes an optional :inverse=1
modifier. #3650
(2.5.0.0)-otex
optional modifier forcefloat=0
can improve memory use for
enormous texture conversion.
#3829 (2.5.2.0)--printinfo
now takes new optional modifiers: :native=1
ensures
that the metadata printed is of the file, not changed by the way the
image is stored in memory (for example, it may have been converted to
a more convenient in-memory data type); :verbose=1
prints verbose
stats even if -v
is not used; :stats=1
prints full pixel stats,
even if --stats
is not used. #3639 (2.5.0.0)--normalize
mormalizes image that represent 3D vectors (i.e.,
divide by their length) textures. This is helpful for normal maps.
#3945 (by Vlad (Kuzmin) Erium) (2.5.3.0)ImageOutput::check_open()
method can be used by format writers
authors to centralize certain validity tests so they don't need to be
implemented separately for each file type. This is not meant to be
called by client application code, only by format writer authors. #3686
(2.5.0.0)ImageInput::valid_file(IOProxy)
overload
#3826 (by Jesse Y)
(2.5.2.0) and implement its overloads for DDS, PSD, and WEBP
#3831 (by Jesse Y)
(2.5.2.0)ImageOutput::check_open()
and ImageInput::open_check()
can be
used by format reader/writer authors to centralize certain validity
tests so they don't need to be implemented separately for each file
type. This is not meant to be called by client application code, only by
format reader/writer authors.
#3686 (2.5.0.0)
#3967 (2.5.3.0)namespace OIIO
functions:
font_list
, font_file_list
, font_dir_list
return, respectively, the
list of fonts that OIIO found, the list of full paths to font files, and
the list of directories searched for fonts. All return a single string
that is a semicolon-separated list of the items. #3633 (2.5.0.0)opencolorio_version
returns the human-readable (e.g. "2.2.0") version
of OpenColorIO that is being used. #3662 (2.5.0.0)ImageCache.get_imagespec()
#3982 (2.5.3.1-beta2)--parallel-frames
parallelizes execution over a frame
range rather than over regions within each image operation.
#3849 (2.5.2.0)--mosaic
improvements to type conversion avoid unnecessary
copies and format conversions. #3979 (2.5.3.1-beta2)getattribute()
of int64 and uint64 data #3555 (2.5.0.0)uint8[]
metadata, which on the
python side will be numpy arrays of type uint8 (dtype='B'). This is
important for being able to set and retrieve "ICCProfile" metadata.
#3556 (2.5.0.0)geterror()
will be printed, to aid users
who would not notice the errors otherwise.
#3949 (2.5.3.0)--cache
option is used, which now both enables the use of
an underlying IC as well as setting its size.
#3986 (2.5.3.1-beta2)maketx --lightprobe
, which never worked properly for images
that weren't float
pixel data type. #3732 (2.5.0.0/2.4.7.0)maketx --cdf
, which was trying to take an extra
command line argument that it didn't need. #3748 (2.5.0.1)-q
(quiet mode) is used, and when an error occurs, only print the
error message and not the full help message. #3649 (2.5.0.0)--point
when there is no alpha channel. #3684
(2.4.6/2.5.0.0)--dumpdata
fix channel name output. #3687 (2.4.6/2.5.0.0)--help
now prints a much abbreviated color management section (just the
OCIO version and config file). Use the new --colorconfiginfo
argument
to print the full color management information, which is both more
readable and more detailed than what --help
used to print. #3707
(2.5.0.0)limits:channels
and
limits:imagesize_MB
. #3617 (2.4.5/2.5.0.0)oiiotool --text
now can find ".ttc" font files. #3633
(2.5.0.0)read_text_file()
to limit the
maximum size that will be allocated and read (default to a limit of
16MB). New read_text_from_command()
is similar to read_text_file
,
but reads from the console output of a shell command. #3635 (2.5.0.0)Filesystem::is_executable()
and find_program()
. #3638
(2.4.6/2.5.0.0)cspan<>
template now allows for Extent template argument (as span<>
already did). #3685 (2.5.0.0)utf16_to_utf8()
to convert between std::u16string
and std::string (UTF-8 encoded). Note the contrast between this and the
existing flavor that takes a std::wstring
with UTF-16 encoding
(std::wchar/wstring
is not guaranteed to 16 bits on all platforms, but
u16char/u16string
is). #3553 (2.5.0.0)trimmed_whitspace()
. #3636 (2.4.5/2.5.0.0)decode_icc_profile
extracts several fields from an ICC profile binary
blob and adds them as metadata to an ImageSpec. #3554 (2.5.0.0)std::hash
work for ustring, add operator<
for ustringhash, add
from_hash()
to ustringhash, make ustringhash ==
and !=
be
constexpr for C++17 and beyond. #3577 (2.4.5/2.5.0.0)OIIO_DISABLE_DEPRECATED
#3830 (2.5.2.0)CMake build system and scripts:
-DOpenImageIO_VERSION
to override the version
number being built (use with extreme caution). #3549 #3653 (2.5.0.0)FORTIFY_SOURCE
, if enabled, builds with the
specified gcc _FORTIFY_SOURCE
option defined. This may be desirable
for people deploying OIIO in security-sensitive environments. #3575
(2.4.5/2.5.0.0)OIIO_DISABLE_BOOST_STACKTRACE
to disable the
stacktrace functionality for users who want to avoid the Boost
stacktrace library. #3777 (by jreichel-nvidia) (2.4.9.0/2.5.1.0)${PROJECT_NAME}
doesn't occur before the call to
project()
. #3651
Dependency support:
INTERNALIZE_FMT
(default ON), if set to OFF, will
force OIIO clients to use the system fmt library and will not copy the
necessary fmt headers into the OIIO include area. #3598 (2.4.7/2.5.0.0)Testing and Continuous integration (CI) systems:
Platform support:
NOGDI
to keep the inclusion of windows.h from adding
as many unneeded symbols. #3596 (by Aras Pranckevičius) (2.4.5/2.5.0.0)