Releases: AcademySoftwareFoundation/OpenImageIO
OpenImageIO v2.3.10.1
Release 2.3.10.1 (7 Dec 2021) -- compared to 2.3.10.0
- Build: restore code that finds Jasper when using statically-linked libraw.
#3210 - Build/test: Gracefully handle failing to find git for test data download.
#3212 - fmath.h: bit_cast specialization should take refs, like the template.
This made warnings for some compilrs. #3213 - Build: make sure to properly use the tbb target if it exists. #3214
OpenImageIO v2.3.10.0
Release 2.3.10 (1 Dec 2021) -- compared to 2.3.9
New (non-compatibility-breaking) features:
- TextureSystem: add feature for stochastic mipmap interpolation. This adds
new interpolation modes "StochasticTrilinear" and "StochasticAniso", which
in conjunction with the "rnd" field in TextureOpt, will stochastically
choose between bracketing MIPmap levels rather than interpolating them. This
reduces texture lookup cost by up to 40%, but it's only useful in the
context of a renderer that uses many samples per pixel. #3127 - maketx/make_texture() now supports options to store Gaussian forward and
inverse transform lookup tables in image metadata (must be OpenEXR textures
for this to work) to aid writing shaders that use histogram-preserving
blending of texture tiling. This is controlled by new maketx arguments
--cdf
,--cdfsigma
,--sdfbits
, or forIBA::make_texture()
by using
hintsmaketx:cdf
,maketx:cdfsigma
, andmaketx:cdfbits
. #3159 oiitool --oiioattrib
can set "global" OIIO control attributes for
an oiiotool run (equivalent of callingOIIO::attribute()
). #3171oiiotool --repremult
exposes the previously existingIBA::repremult()
.
The guidance here is that--premult
should be used for one-time conversion
of "unassociated alpha/unpremultiplied color" to associated/premultiplied,
but when you are starting with a premultiplied image and have a sequence of
unpremultiply, doing some adjustment in unpremultiplied space, then
re-premultiplying, it's--repremult
you want as the last step, because it
preserves alpha = 0, color > 0 data without crushing it to black. #3192oiiotool --saturate
andIBA::saturate()
can adjust saturation level of a
color image. #3190- When building against OpenEXR >= 3.1.3, our OpenEXR output now supports
specifying the zip compression level (for example, by passing the
"compression" metadata as "zip:4"). Also note than when using OpenEXR >=
3.1.3, the default zip compression has been changed from 6 to 4, which
writes compressed files significantly (tens of percent) faster, but only
increases compressed file size by 1-2%. #3157 - Improved image dithering facilities: When dithering is chosen, it now
happens any time you reduce >8 bits to <= 8 bits (not just when converting
from float or half); change the dither pattern from hashed to blue noise,
which looks MUCH better (beware slightly changed appearance);IBA::noise()
andoiiotool --noise
now take "blue" as a noise name, giving a blue noise
pattern;IBA::bluenoise_image()
returns a reference to a stored periodic
blue noise iamge;oiiotool -d
now lets you ask for "uint6", "uint4",
"uint2", and "uint1" bit depths, for formats that support them. #3141 - New global OIIO attribute
"try_all_readers"
can be set to 0 if you want to
override the default behavior and specifically NOT try any format readers
that don't match the file extension of an input image (usually, it will try
that one first, but it if fails to open the file, all known file readers
will be tried in case the file is just misnamed, but sometimes you don't
want it to do that). #3172 - Raise the default ImageCache default tile cache from 256MB to 1GB. This
should improve performance for some operations involving large images or
images with many channels. #3180 - IOProxy support has been added to JPEG output (already was supported for
JPEG input) and for GIF input and output. #3181 #3182 oiiotool --maxchan
and--minchan
, andIBA::maxchan()
andminchan()
turn an N-channel image into a 1-channel images that for each pixel,
contains the maximum value in any channel of the original for that pixel.
#3198
Bug fixes:
- Fix
oiiotool --invert
to avoid losing the alpha channel values. #3191 - Fix excessive memory usage when saving EXR files with many channels. #3176
- WebP: Fix previous failure to properly set the "oiio:LoopCount" metadata
for animated webp images. #3183 - Targa: Better detection/safety when reading corrupted files, and fixed
bug when reading x-flipped images. #3162 - RLA: better guards against malformed input. #3163
- Fix oiiotool bug when autocropping output images when the entire pixel data
window is in the negative coordinate region. #3164 - oiiotool improved detection of file reading failures. #3165
- DDS: Don't set "texturetype" metadata, it should always have been only
"textureformat". Also, add unit testing of DDS to the testsuite. #3200 - When textures are created with the "monochrome-detect" feature enabled,
which turns RGB textures where all channels are always equal into true
single channel greyscale, the single channel that results is now correctly
named "Y" instead of leaving it as "R" (it's not red, it's luminance).
#3205
Build fixes and developer goodies:
- Update internal stb_printf implementation (avoids some sanitizer alerts).
#3160 - Fixes for MSVS compile. #3168
- Add Cuda host/device decorations to TypeDesc methods to make them GPU
friendly. #3188 - TypeDesc: The constructor from a string now accepts "box2f" and "box3f"
as synonyms for "box2" and "box3", respectively. #3183 - New Strutil::parse_values, scan_values, scan_datetime, parse_line. #3173
#3177 - New
Filesystem::write_binary_file()
utility function. #3199 - New build option
-DTIME_COMMANDS=ON
will print time to compile each module
(for investigating build performance; only useful when building with
CMAKE_BUILD_PARALLEL_LEVEL=1
). #3194
OpenImageIO 2.3.9.1
Release 2.3.9.1 (1 Nov 2021) -- compared to 2.3.8
- OpenEXR: When building against OpenEXR 3.1+ and when the global OIIO
attribute "openexr:core" is set to nonzero, do more efficient multithreaded
reading of OpenEXR files. #3107 oiiotool --dumpdata:C=name
causes the dumped image data to be formatted
with the syntax of a C array. #3136- oiiotool: Allow quotes in command modifiers. #3112
- jpeg input: remove stray debugging output to console. #3134
- HEIF: Handle images with unassociated alpha. #3146
- Targa: improved error detection for read errors and corrupted files. #3120
- raw: When using libraw 0.21+, now support new color space names "DCE-P3",
"Rec2020", and "sRGB-linear", and "ProPhoto-linear". Fix incorrect gamma
values for "ProPhoto". #3123 #3153 Fixes to work with the libraw 202110
snapshot. #3143 - TIFF: honor zip compression quality request when writing TIFF. #3110
- Fix broken oiiotool --dumpdata output. #3131
- Fix possible bad data alignment and SIMD assumptions inside TextureSystems
internals. #3145 - Field3D, which is no longer actively supported, now has support disabled in
the default build. To enable Field3D support, you must build with
-DENABLE_FIELD3D=1
. Note that we expect it to be no longer supported at
all, beginning with OIIO 2.4. #3140 - Build: Address new warnings revealed by clang 13. #3122
- Build: Fix when building with Clang on big-endian architectures. #3133
- Build: Fix occasional build breaks related to OpenCV headers. #3135
- Build: Improvements to NetBSD and OpenBSD support. #3137.
- docs: Add an oiiotool example of putting a border around an image. #3138
- docs: Fix explanation of ImageCache "falure_retries" attribute. #3147
OpenImageIO v2.2.19.0
Release 2.2.19 (1 Nov 2021) -- compared to 2.2.18
- Better catching of exceptions thrown by OCIO 1.x if it encounters 2.0 config
files. #3089 - Address new warnings revealed by clang 13. #3122
- Fixed some minor python binding bugs. #3074 #3094
- Fix when building with Clang on big-endian architectures. #3133
- Fix occasional build breaks related to OpenCV headers. #3135
- Improvements to NetBSD and OpenBSD support. #3137.
- Fixes to work with the libraw 202110 snapshot. #3143
Note: This is an update to the obsolete 2.2 release family. The current
fully-supported release family is 2.3.
OpenImageIO v2.3.8.0
Release 2.3.8 (1 Oct 2021) -- compared to 2.3.7
- Fix ImageBuf::read() bug for images of mixed per-channel data types. #3088
- Fix crash that could happen with invalidly numbered UDIM files. #3116
- Better catching of exceptions and other error handling when OpenColorIO 1.x
is used but encounters an OpenColorIO 2.x config file. #3089 #3092 #3095 - Ensure that OpenColorIO doesn't send info messages to the console if no
config is found. #3113 - Fix: make sure ImageSpec deserialization works for arbitrary attribs. #3066
oiiotool -ch
now has greatly reduced cost (no useless allocations or
copies) when the channel order and names don't change. #3068oiiotool --runstats
is now much better about correctly attributing I/O
time to-i
instead of to the subsequent operations that triggers the
read. #3073- TIFF output now supports IO proxies. #3075 #3077
- Improved finding of fonts (by IBA::render_text and oiiotool --text). It now
honors environment variable$OPENIMAGEIO_FONTS
and global OIIO attribute
"font_searchpath" to list directories to be searched when fonts are needed.
#3096 - We no longer install a FindOpenImageIO.cmake module. It was incomplete, out
of date, and wholly unnecessary now that we correctly export a config file
OpenImageIOConfig.cmake and friends. #3098 - When building against OpenEXR 3.1+, use of the OpenEXRCore library no longer
requires a build-time option, but instead is always available (though off by
default) and can be enabled by an application setting the OIIO global
attribute "openexr:core" to 1. #3100 - dev: Timer::add_seconds and add_ticks methods. #3070
- dev: Add
round_down_to_multiple()
and improveround_to_multiple()
to
correctly handle cases where the value is less than 0. #3104
OpenImageIO 2.3.7.2
Release 2.3 (1 Sept 2021) -- compared to 2.2
New minimum dependencies and compatibility changes:
- C++ standard: C++14 is now the minimum (gcc 6.1 - 11.2, clang 3.4 - 12,
MSVS 2017 - 2019, icc 17+). The default C++ standard mode, if none is
explicitly specified, is now C++14. #2918 (2.3.4) #2955 #2977 (2.3.5) - FFMmpeg (optional) dependency minimum is now 3.0 (raised from 2.6). #2994
- OpenCV (optional) dependency minimum is now 3.0 (raised from 2.0). #3015
New major features and public API changes:
- Changes and clarifications to
geterror()
in all classes that have one:geterror()
now takes an optionalclear
parameter controls if the
pending error is cleared as well as retrieved (defaulttrue
).- All classes with
geterror()
are ensured to havehas_error()
. geterror()
appends to the pending error message, if one is already
present but not retrieved. Appending errors will be automatically
separated by newlines, also any newline at the end of a geterror
call will be stripped. #2740 (2.3.0.1)
- ImageInput error messages are now thread-specific. This prevents multiple
threads simultaneously reading from the same ImageInput from getting the
other thread's error messages. But it means you must always retrieve an
error withgetmessage()
from the same thread that made the read call
that generated the error. #2752 (2.3.0.1) - ImageInput and ImageOutput have removed several fields (like the m_mutex)
and instead now use a PIMPL idiom that hides internals better from the
ABI. If you had a custom ImageInput/Output class that directly accessed
the m_mutex, replace it instead with calls to ImageInput::lock() and
unlock() (and ImageOutput). #2752 (2.3.1.0) - Clarify that ImageBuf methods
subimage()
,nsubimages()
,miplevel()
,
nmipevels()
, andfile_format_name()
refer to the file that an ImageBuf
was read from, and are thus only meaningful for ImageBuf's that directly
read from files. "Computed" or copied ImageBuf's are solo images in memory
that no longer correspond to a file even if the input to the computation
was from a file. #2759 (2.3.0.1/2.2.9) - New
get_extension_map()
returns a map that list all image file formats
and their presumed file extensions. #2904 (2.3.4) - Overhaul of how we handle "thumbnails" (small preview images embedded in
the headers of some image file formats) #3021 (2.3.7):- Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
metadata of a big character array blob. - ImageInput, ImageBuf, and ImageCache have varieties of
get_thumbnail()
method that returns the thumbnail as an ImageBuf. If this is not
called, ideally the reader will not undergo the expense of reading and
storing thumbnail data. - ImageOutput and ImageBuf have
set_thumbnail()
to communicate a
thumbnail image as an ImageBuf. - The net effect is that reading files and retrieving ImageSpec's should
be more efficient for apps that don't have a use for thumbnails.
- Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
- Significant improvements to UDIM handling in ImageCache/TextureSystem:
- New UDIM texture name patterns recognized:
%(UDIM)d
is the Houdini
convention, and_u##v##
is for Animal Logic's internal renderer.
#3006 (2.2.16/2.3.6) - It is now permissible for
get_texture_info()/get_image_info()
to
retrieve metadata for UDIM patterns -- previously it failed, but now
it will succeed in retrieving any metadata as long as it is present
and has the same value in all the matching "UDIM tile" panels. #3049
(2.3.7) - TextureSystem now exposes methods
is_udim()
,resolve_udim()
,
inventory_udim()
that should be helpful for apps dealing with UDIM
textures. See the documentation for details. #3054 (2.3.7) - Performance improvements when using UDIM textures. #3049 (2.3.7)
- New UDIM texture name patterns recognized:
- ImageBuf, when "wrapping" an app-owned buffer, now allows explicit
specification of stride lengths. This allows you to wrap a buffer that
has internal padding or other non-contiguous spacing of pixels, scanlines,
or image planes. #3022 (2.3.6) - oiiotool new commands and options:
--pastemeta
takes two images as arguments, and appends all the
metadata (only) from the first image onto the second image's pixels
and metadata, producing a combined image. #2708 (2.3.0.0)--chappend
and--siappend
both allow an optional modifier:n=
to specify the number of images from the stack to be combined
(default n=2). #2709 (2.3.0.0)--fit
now takes an additional optional modifier:fillmode=
with
choices ofletterbox
(default),width
, andheight
. #2784 (2.3.2.0)--autocc
now has an optional modifier:unpremult=1
that causes
any color transformations related to autocc to unpremultiply by alpha
before the transformation and then re-premultiply afterwards, exactly
the same control that exists for individual--colorconvert
but never
existed for autocc. #2890 (2.3.3)--list-formats
lists all the image file formats that OIIO knows
about, and for each, the associated file extensions. #2904 (2.3.4)--skip-bad-frames
causes an error (such as an input file not being
found) to simply skip to the next frame in the frame range loop, rather
that immediately exiting. #2905 (2.3.4)- When doing expression substitution,
{getattribute(name)}
will be
replaced by the value thatOIIO::getattribute(name, ...)
would
retrieve. #2932 (2.3.4) --missingfile
(which takes a subsequent argument oferror
,black
,
orchecker
) determines the behavior when an input image file is
missing (the file does not exist at all, does not include cases where
the file exists but there are read errors). The default value of
error
matches the old behavior: report an error and terminate all
command processing. Other choices ofblack
orchecker
will continue
processing but substitute either a black or checkerboard image for the
missing file. #2949 (2.3.4)--printinfo
prints verbose metadata info about the current top
image on the stack. #3056 (2.3.7)--printstats
prints statistics about the current top image on the
stack, and optionally can limit the statistics to a rectangular
subregion of the image. #3056 (2.3.7)- Expanded expression now support the following new metadata notations:
META
,METABRIEF
, andSTATS
. #3025 (2.3.6) --mosaic
now takes optionalfit=WxH
modifier that lets you set the
"cell" size, with all constituent images resized as needed (similarly
to if you used--fit
on each individually). This is helpful for
creating contact sheets without having to resize separately or to know
the resolution of the original images. #3026 (2.3.6)- REMOVED
--histogram
which had been deprecated and undocumented since
before OIIO 2.0. #3029 (2.3.6)
- Python bindings:
- When transferring blocks of pixels (e.g.,
ImageInput.read_image()
orImageOutput.write_scanline()
), "half" pixels ended up mangled
into uint16, but now they use the correctnumpy.float16
type. #2694
(2.3.0.0) - The value passed to
attribute(name, typedesc, value)
can now be a
tuple, list, numpy array, or scalar value. #2695 (2.3.0.0) - Added Python bindings for the TextureSystem. #2842
- Add the previously (inadvertently) omitted enum value for
ImageBufAlgo.MakeTxBumpWithSlopes
. #2951 (2.3.4)
- When transferring blocks of pixels (e.g.,
- Environment variables:
CUE_THREADS
env variable, if set, is now honored to set the default
size of the OIIO thread pool. This helps to make OIIO-based apps be
good citizens when run as OpenCue jobs. #3038 (2.3.7)
- Library organization:
- All the utility classes are now in libOpenImageIO_Util only and
libOpenImageIO depends on and links to libOpenImageIO_Util, rather
than the utility classes being defined separately in both libraries.
#2906 (2.3.4) - Include file change:
imagebuf.h
no longer includesimagecache.h
.
It should never have needed to, since it didn't need any of its
declarations. Other code that should always have included both headers,
but inadvertently only includedimagebuf.h
, may now need to add an
explicit#include <OpenImageIO/imagecache.h>
. #3036 (2.3.7)
- All the utility classes are now in libOpenImageIO_Util only and
- Important change to
Makefile
wrapper: We have a 'Makefile' that just wraps
cmake for ease of use. This has changed its practice of putting builds in
build/ARCH
to justbuild
(and local installs fromdist/ARCH
todist
)
to better match common cmake practice. So where your local builds end up may
shift a bit. #3057 (2.3.7) - Deprecations: A number of long-deprecated functions and methods have been
given deprecation attributes that will cause warnings if you use them. They
will eventually be removed entirely at the next "breaking" release (3.0,
whenever that is). #3032 (2.3.7)
Performance improvements:
- Speed up BMP reading by eliminating wasteful allocation and copying
done on each scanline read. #2934 (2.3.4) - For
IBA::to_OpenCV()
, improve efficiency for certain image copies. #2944
(2.3.4) - Fix runaway parsing time for pathological XMP metadata. #2968 (2.3.5/2.2.15)
- TextureSystem reduction in overhead when using UDIM textures. #3049 (2.3.7)
Fixes and feature enhancements:
- Fix a situation where if an ImageBuf backed by an ImageCache reads an
image, then the image changes on disk, then another ImageBuf or ImageCache
tries to read it, it could end up with the old version. This involved some
strategic cache invalidation when ImageB...
OpenImageIO 2.2.18.0
OpenImageIO 2.3.7.0-beta (First beta of 2.3)
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.
Release 2.3 (1 Sept 2021?) -- compared to 2.2
New minimum dependencies and compatibility changes:
- C++ standard: C++14 is now the minimum (gcc 6.1 - 11.2, clang 3.4 - 12,
MSVS 2017 - 2019, icc 17+). The default C++ standard mode, if none is
explicitly specified, is now C++14. #2918 (2.3.4) #2955 #2977 (2.3.5) - FFMmpeg (optional) dependency minimum is now 3.0 (raised from 2.6). #2994
- OpenCV (optional) dependency minimum is now 3.0 (raised from 2.0). #3015
New major features and public API changes:
- Changes and clarifications to
geterror()
in all classes that have one:geterror()
now takes an optionalclear
parameter controls if the
pending error is cleared as well as retrieved (defaulttrue
).- All classes with
geterror()
are ensured to havehas_error()
. geterror()
appends to the pending error message, if one is already
present but not retrieved. Appending errors will be automatically
separated by newlines, also any newline at the end of a geterror
call will be stripped. #2740 (2.3.0.1)
- ImageInput error messages are now thread-specific. This prevents multiple
threads simultaneously reading from the same ImageInput from getting the
other thread's error messages. But it means you must always retrieve an
error withgetmessage()
from the same thread that made the read call
that generated the error. #2752 (2.3.0.1) - ImageInput and ImageOutput have removed several fields (like the m_mutex)
and instead now use a PIMPL idiom that hides internals better from the
ABI. If you had a custom ImageInput/Output class that directly accessed
the m_mutex, replace it instead with calls to ImageInput::lock() and
unlock() (and ImageOutput). #2752 (2.3.1.0) - Clarify that ImageBuf methods
subimage()
,nsubimages()
,miplevel()
,
nmipevels()
, andfile_format_name()
refer to the file that an ImageBuf
was read from, and are thus only meaningful for ImageBuf's that directly
read from files. "Computed" or copied ImageBuf's are solo images in memory
that no longer correspond to a file even if the input to the computation
was from a file. #2759 (2.3.0.1/2.2.9) - New
get_extension_map()
returns a map that list all image file formats
and their presumed file extensions. #2904 (2.3.4) - Overhaul of how we handle "thumbnails" (small preview images embedded in
the headers of some image file formats) #3021 (2.3.7):- Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
metadata of a big character array blob. - ImageInput, ImageBuf, and ImageCache have varieties of
get_thumbnail()
method that returns the thumbnail as an ImageBuf. If this is not
called, ideally the reader will not undergo the expense of reading and
storing thumbnail data. - ImageOutput and ImageBuf have
set_thumbnail()
to communicate a
thumbnail image as an ImageBuf. - The net effect is that reading files and retrieving ImageSpec's should
be more efficient for apps that don't have a use for thumbnails.
- Thumbnails no longer embedded in the ImageSpec as "thumbnail_image"
- Significant improvements to UDIM handling in ImageCache/TextureSystem:
- New UDIM texture name patterns recognized:
%(UDIM)d
is the Houdini
convention, and_u##v##
is for Animal Logic's internal renderer.
#3006 (2.2.16/2.3.6) - It is now permissible for
get_texture_info()/get_image_info()
to
retrieve metadata for UDIM patterns -- previously it failed, but now
it will succeed in retrieving any metadata as long as it is present
and has the same value in all the matching "UDIM tile" panels. #3049
(2.3.7) - TextureSystem now exposes methods
is_udim()
,resolve_udim()
,
inventory_udim()
that should be helpful for apps dealing with UDIM
textures. See the documentation for details. #3054 (2.3.7) - Performance improvements when using UDIM textures. #3049 (2.3.7)
- New UDIM texture name patterns recognized:
- ImageBuf, when "wrapping" an app-owned buffer, now allows explicit
specification of stride lengths. This allows you to wrap a buffer that
has internal padding or other non-contiguous spacing of pixels, scanlines,
or image planes. #3022 (2.3.6) - oiiotool new commands and options:
--pastemeta
takes two images as arguments, and appends all the
metadata (only) from the first image onto the second image's pixels
and metadata, producing a combined image. #2708 (2.3.0.0)--chappend
and--siappend
both allow an optional modifier:n=
to specify the number of images from the stack to be combined
(default n=2). #2709 (2.3.0.0)--fit
now takes an additional optional modifier:fillmode=
with
choices ofletterbox
(default),width
, andheight
. #2784 (2.3.2.0)--autocc
now has an optional modifier:unpremult=1
that causes
any color transformations related to autocc to unpremultiply by alpha
before the transformation and then re-premultiply afterwards, exactly
the same control that exists for individual--colorconvert
but never
existed for autocc. #2890 (2.3.3)--list-formats
lists all the image file formats that OIIO knows
about, and for each, the associated file extensions. #2904 (2.3.4)--skip-bad-frames
causes an error (such as an input file not being
found) to simply skip to the next frame in the frame range loop, rather
that immediately exiting. #2905 (2.3.4)- When doing expression substitution,
{getattribute(name)}
will be
replaced by the value thatOIIO::getattribute(name, ...)
would
retrieve. #2932 (2.3.4) --missingfile
(which takes a subsequent argument oferror
,black
,
orchecker
) determines the behavior when an input image file is
missing (the file does not exist at all, does not include cases where
the file exists but there are read errors). The default value of
error
matches the old behavior: report an error and terminate all
command processing. Other choices ofblack
orchecker
will continue
processing but substitute either a black or checkerboard image for the
missing file. #2949 (2.3.4)--printinfo
prints verbose metadata info about the current top
image on the stack. #3056 (2.3.7)--printstats
prints statistics about the current top image on the
stack, and optionally can limit the statistics to a rectangular
subregion of the image. #3056 (2.3.7)- Expanded expression now support the following new metadata notations:
META
,METABRIEF
, andSTATS
. #3025 (2.3.6) --mosaic
now takes optionalfit=WxH
modifier that lets you set the
"cell" size, with all constituent images resized as needed (similarly
to if you used--fit
on each individually). This is helpful for
creating contact sheets without having to resize separately or to know
the resolution of the original images. #3026 (2.3.6)- REMOVED
--histogram
which had been deprecated and undocumented since
before OIIO 2.0. #3029 (2.3.6)
- Python bindings:
- When transferring blocks of pixels (e.g.,
ImageInput.read_image()
orImageOutput.write_scanline()
), "half" pixels ended up mangled
into uint16, but now they use the correctnumpy.float16
type. #2694
(2.3.0.0) - The value passed to
attribute(name, typedesc, value)
can now be a
tuple, list, numpy array, or scalar value. #2695 (2.3.0.0) - Added Python bindings for the TextureSystem. #2842
- Add the previously (inadvertently) omitted enum value for
ImageBufAlgo.MakeTxBumpWithSlopes
. #2951 (2.3.4)
- When transferring blocks of pixels (e.g.,
- Environment variables:
CUE_THREADS
env variable, if set, is now honored to set the default
size of the OIIO thread pool. This helps to make OIIO-based apps be
good citizens when run as OpenCue jobs. #3038 (2.3.7)
- Library organization:
- All the utility classes are now in libOpenImageIO_Util only and
libOpenImageIO depends on and links to libOpenImageIO_Util, rather
than the utility classes being defined separately in both libraries.
#2906 (2.3.4) - Include file change:
imagebuf.h
no longer includesimagecache.h
.
It should never have needed to, since it didn't need any of its
declar...
- All the utility classes are now in libOpenImageIO_Util only and
OpenImageIO 2.2.17.0
Release 2.2.17 (1 Aug 2021) -- compared to 2.2.16
- Output to DPX files now supports IOProxy. (Input already did.) #3013
- typedesc.h: TypeDesc can now describe 2D and 3D bounding boxes, as arrays
of 2 VEC2 aggregates (for 2D) or VEC3 aggregates (for 3D) with "BOX"
semantic. The shorthand for these areTypeBox2
,TypeBox3
(for float),
andTypeBox2i
andTypeBox3i
for integer or pixel coordinte
boxes. #3008 - Build: Fixes for building against fmt 8.0.0. #3007
- Build: Finding boost is more flexible when desiring static libraries. #3031
OpenImageIO 2.2.16.0
Release 2.2.16 (1 Jul 2021) -- compared to 2.2.15
- New UDIM texture name patterns recognized:
%(UDIM)d
is the Houdini
convention, and_u##v##
is for Animal Logic's internal renderer. #3006
(2.2.16) - When doing color space transforms on images with > 4 channels -- the
additional channels are now copied unaltered, rather than leaving them
black. #2987 (2.2.16) - FFMpeg: fix some encodings that didn't correctly recognize that they were
more than 8 bits, or had alpha. #2989 (2.2.16) - farmhash.h: Clean up all non-namespaced preprocessor symbols that are set
by this header and may pollute the caller's symbols. #3002 (2.2.16) - Fix crashes on M1 (ARM) based Mac. #2990 (2.2.16)
- Bug fix: avoid divide-by-0 error computing chunk size for invalid image
sizes. #2983 (2.2.16) make_texture
(andmaketx
andoiiotool -otex
) no longer crash if you
try to make a texture out of a "deep" image; instead it will return an
error message. #2991 (2.2.16)- filesystem.h: Improve exception safety in Filesystem directory iteration.
#2998 (2.2.16) - Build: Improve finding of OpenJPEG. #2979 (2.2.16)
- Build: Support for building OIIO with gcc 11. #2995 (2.2.16)
- Build: Fixes to accommodate Imath 3.1 upcoming changes. #2996 (2.2.16)
- Build: Finding FFMpeg now correctly detects the version. #2994 (2.2.16)
- Build: clang + C++17 + LibRaw < 0.20 are mutually incompatible. Detect
this combination and warn / disable libraw under those conditions. #3003
(2.2.16) - Build: Fix CMake behavior for
REQUIRED_DEPS
due to a typo. #3011 (2.2.16) - Build: Fixes for detecting and using Ptex, among other things got the
version wrong. #3001 (2.2.16) - Testing: If a feature is disabled, skip its tests rather than reporting
them as broken. #2988 (2.2.16) - CI: Test the combination of clang and C++17. #3003 (2.2.16)