oiiotool(1)

πŸ’– oiiotool β€” from the OpenImageIO manual, bestie edition πŸ’–

okay so. sit down. hydrate. we're doing oiiotool(1) from the OpenImageIO manual and honestly? it's a whole lifestyle. no cap.

✨ NAME ✨

oiiotool β€” simple image processing operations πŸŽ€

🌈 SYNOPSIS 🌈

Usage: oiiotool [filename|command]...

πŸ¦‹ DESCRIPTION πŸ¦‹

so this program is part of the OpenImageIO tool suite (http://www.openimageio.org) and the detailed documentation ships as a pdf with the OpenImageIO distribution. literally the whole lore is in there.

important usage tips: (read these, fr fr, they're the vibe check of the whole tool πŸ‘‘)
  • The oiiotool command line is processed in order, LEFT to RIGHT. no skipping, no shuffling, it's a queue bestie πŸ’…
  • The command line consists of image NAMES (image.tif) and COMMANDS (--over). Commands start with dashes (one or two dashes are equivalent, they're the same thing, we don't gatekeep dash counts). Some commands have required arguments which must follow on the command line. For example, the -o command is followed by a filename. 🫢
  • oiiotool is STACK-based: naming an image pushes it on the stack, and most commands pop the top image (or sometimes more than one image), perform a calculation, and push the result image back on the stack. For example, the --over command pops the top two images off the stack, composites them, then pushes the result back onto the stack. it's giving ✨stack of plates at a buffet✨ energy.
  • Some commands allow one or more optional MODIFIERS in the form name=value, which are appended directly to the command itself (no spaces), separated by colons :. For example:
oiiotool in.tif --text:x=100:y=200:color=1,0,0 "Hello" -o out.tif
  • Using numerical wildcards will run the whole command line on each of several sequentially-named files, for example:
oiiotool fg.#.tif bg.#.tif -over -o comp.#.tif

See the manual for info about subranges, number of digits, etc. 🧚

  • Command line arguments containing substrings enclosed in braces {} are replaced by evaluating their contents as expressions. Simple math is allowed as well as retrieving metadata such as {TOP.'foo:bar'}, {IMG[0].filename}, or {FRAME_NUMBER/24.0}. it's giving calculator that also knows secrets 😭

πŸ’… OPTIONS πŸ’…

🌸 Options (general flags) 🌸

  • --help β€” Print help message. your little emergency button πŸ™ˆ
  • --version β€” Print version.
  • -v β€” Verbose status messages. it will yap (affectionately) πŸ’¬
  • -q β€” Quiet mode (turn verbose off and reduce printed output). shhh era 🀫
  • -n β€” No saved output (dry run). you're just pretending, no files were harmed πŸ’€
  • --no-error-exit β€” Do not exit upon error, try to process additional commands (danger!). this one is spicy, she said danger, believe her πŸ”₯
  • -a β€” Do operations on all subimages/miplevels.
  • --debug β€” Debug mode. detective hat on πŸ•΅οΈ
  • --runstats β€” Print runtime statistics.
  • --buildinfo β€” Print OIIO build information.
  • --info β€” Print resolution and basic info on all inputs, detailed metadata if -v is also used (options: format=xml:verbose=1).
  • --list-formats β€” List all supported file formats and their filename extensions.
  • --metamatch REGEX β€” Which metadata is printed with -info -v.
  • --no-metamatch REGEX β€” Which metadata is excluded with -info -v.
  • --stats β€” Print pixel statistics of all inputs files.
  • --dumpdata β€” Print all pixel data values of input files (options: empty=1, C=arrayname).
  • --hash β€” Print SHA-1 hash of each input image.
  • -u β€” Update mode: skip outputs when the file exists and is newer than all inputs. she's efficient, she's booked, she's not redoing work πŸ’…
  • --no-clobber β€” Do not overwrite existing files. respect the existing files, periodt βœ‹
  • --create-dir β€” Create output directories if it doesn't exists. (yes that's what it says, we keep it verbatim, no editing the queen's grammar πŸ‘‘)
  • --threads N β€” Number of threads (default 0 == #cores). default 0 means "use all the cores, go feral" πŸ”₯
  • --gpu β€” [EXPERIMENTAL] Use GPU if available (options: device=...).
  • --no-autopremult β€” Turn off automatic premultiplication of images with unassociated alpha.
  • --autopremult β€” Turn on automatic premultiplication of images with unassociated alpha.
  • --autoorient β€” Automatically --reorient all images upon input.
  • --autocc β€” Automatically color convert based on filename (options: unpremult=).
  • --noautocc β€” Turn off automatic color conversion.
  • --native β€” Keep native pixel data type (bypass cache if necessary).
  • --cache MB β€” ImageCache size (in MB: default=4096).
  • --autotile TILESIZE β€” Autotile enable for cached images (the argument is the tile size, default 0 means no autotile).
  • --metamerge β€” Always merge metadata of all inputs into output.
  • --oiioattrib NAME VALUE β€” Sets global OpenImageIO attribute (options: type=...).
  • --experimental β€” Allow experimental features. buckle up 🎒

πŸŽ€ Control flow and scripting πŸŽ€

she's a whole programming language now, slay πŸ’–

  • --set NAME VALUE β€” Set a user variable (options: type=...).
  • --if VALUE β€” If VALUE is not 0 or empty, execute commands until --endif.
  • --else β€” Else clause of the current 'if' block.
  • --endif β€” End the current 'if' block.
  • --while VALUE β€” If VALUE is not 0 or empty, execute commands until --endwhile and loop. round and round bestie πŸ”„
  • --endwhile β€” End the current 'while' block.
  • --for VARIABLE RANGE β€” Iterate over a range the commands between here and --endfor. The range may be END (implied begin 0 and step 1), START,END (implied step 1) or START,END,STEP.
  • --endfor β€” End the current 'for' block.
  • --frames FRAMERANGE β€” Frame range for # or printf-style wildcards.
  • --framepadding NDIGITS β€” Frame number padding digits (ignored when using printf-style wildcards).
  • --views VIEWNAMES β€” Views for %V/%v wildcards (comma-separated, defaults to "left,right").
  • --skip-bad-frames β€” Skip to next frame in range if there's an error, rather than exiting. we forgive and we move on 🫢
  • --parallel-frames β€” Parallelize evaluation of frame range.
  • --wildcardoff β€” Disable numeric wildcard expansion for subsequent command line arguments.
  • --wildcardon β€” Enable numeric wildcard expansion for subsequent command line arguments.
  • --evaloff β€” Disable {expression} evaluation for subsequent command line arguments.
  • --evalon β€” Enable {expression} evaluation for subsequent command line arguments.

πŸ“Έ Commands that read images πŸ“Έ

  • -i FILENAME β€” Input file (options: autocc=, ch=, get_thumbnail=, info=, infoformat=, native=, now=, type=, unpremult=).
  • --iconfig NAME VALUE β€” Sets input config attribute (options: type=...).
  • --missingfile OPTION β€” Set policy for missing input files: 'error' (default), 'black', 'checker'. three flavors of "where'd the file go" 😭
  • --testread FILENAME β€” Test file read (do not keep image; used for debugging).

πŸ’Ύ Commands that write images πŸ’Ύ

  • -o FILENAME β€” Output the current image to the named file (options: all=, autocc=, autocrop=, autotrim=, bits=, contig=, datatype=, dither=, fileformatname=, scanline=, separate=, tile=, unpremult=).
  • -otex FILENAME β€” Output the current image as a texture.
  • -oenv FILENAME β€” Output the current image as a latlong env map.
  • -obump FILENAME β€” Output the current bump texture map as a 6 channels texture including the first and second moment of the bump slopes (options: bumpformat=height|normal|auto, uvslopes_scale=val>=0, bumpscale=%f, bumpinverts=false, bumpinvertt=false, slopefilter=sobel|centraldiff, bumprange=centered|positive|auto).

πŸ–ΌοΈ Options that affect subsequent image output πŸ–ΌοΈ

  • -d TYPE β€” ’-d TYPE' sets the output data format of all channels, ’-d CHAN=TYPE' overrides a single named channel (multiple -d args are allowed). Data types include: uint8, sint8, uint10, uint12, uint16, sint16, uint32, sint32, half, float, double.
  • --scanline β€” Output scanline images.
  • --tile WIDTH HEIGHT β€” Output tiled images with this tile size.
  • --compression NAME β€” Set the compression method (in the form "name" or "name:quality").
  • --dither β€” Add dither when writing <= 8-bit output from > 8 bit input.
  • --planarconfig CONFIG β€” Force planarconfig (contig, separate, default).
  • --adjust-time β€” Adjust file times to match DateTime metadata. she keeps her timestamps in sync, queen behavior ⏰
  • --noautocrop β€” Do not automatically crop images whose formats don't support separate pixel data and full/display windows.
  • --autotrim β€” Automatically trim black borders upon output to file formats that support separate pixel data and full/display windows.

πŸ” Options that print data (usually about the current image) πŸ”

  • --echo TEXT β€” Echo message to console (options: newline=0).
  • --printinfo β€” Print info and metadata of the current top image (options: allsubimages=, native=1, stats=1, verbose=0).
  • --printstats β€” Print pixel statistics of the current top image (options: allsubimages=, window=<geom>).
  • --colorcount COLORLIST β€” Count of how many pixels have the given color (argument: color;color;...) (options: eps=color).
  • --rangecheck MIN MAX β€” Count of how many pixels are outside the min/max color range (each is a comma-separated color value list).

🏷️ Options that change current image metadata (but not pixel values) 🏷️

key detail bestie: metadata only. the pixels are UNTOUCHED. she's just rearranging the little name tags, not the artwork. πŸ’œ
  • --attrib NAME VALUE β€” Sets metadata attribute (options: type=...).
  • --sattrib NAME VALUE β€” Sets string metadata attribute.
  • --eraseattrib REGEX β€” Yeet attributes matching a regex, bestie. (options: fromfile=1 filename-containing-patterns πŸ’…
  • --caption TEXT β€” Sets the caption, which is the ImageDescription metadata ✨
  • --keyword KEYWORD β€” Adds a keyword, periodt πŸ‘‘
  • --clear-keywords β€” Clears all the keywords, bye bestie πŸ’€
  • --history β€” Writes the full command line into Exif:ImageHistory and Software metadata attributes 🫢
  • --no-history β€” Does NOT write the full command line into Exif:ImageHistory and Software metadata attributes πŸ™ˆ
  • --nosoftwareattrib β€” Writes no Exif:ImageHistory or Software metadata attributes at all, periodt 🚫
  • --sansattrib β€” Writes the command line into Software & ImageHistory but removes the --sattrib and --attrib options 🧚
  • --orientation ORIENT β€” Sets the assumed orientation πŸ‘‘
  • --orientcw β€” Rotates the orientation metadata 90 degrees clockwise πŸ”„
  • --orientccw β€” Rotates the orientation metadata 90 degrees counter-clockwise πŸ”„
  • --orient180 β€” Rotates the orientation metadata 180 degrees πŸ”„
  • --origin +X+Y β€” Sets the pixel data window origin, like +20+10 or -16-16 πŸ“
  • --originoffset +X+Y β€” Offsets the pixel data window origin from where it is now, like +20+10 or -16-16 πŸ“
  • --fullsize GEOM β€” Sets the display window, e.g. 1920x1080, 1024x768+100+0, -20-30 πŸ–ΌοΈ
  • --fullpixels β€” Sets the 'full' image range to be the pixel data window πŸ’–
  • --chnames NAMELIST β€” Sets the channel names, comma-separated πŸŽ€

✨ Options that affect subsequent actions: ✨

  • --fail THRESH β€” Failure threshold difference, default 0.000001 πŸ’”
  • --failpercent PCNT β€” Allow this percentage of failures in diff, default 0 πŸ’”
  • --hardfail THRESH β€” Fail diff if any one pixel exceeds this error, default infinity πŸ’€
  • --warn THRESH β€” Warning threshold difference, default 0.00001 ⚠️
  • --warnpercent PCNT β€” Allow this percentage of warnings in diff, default 0 ⚠️
  • --hardwarn THRESH β€” Warn if any one pixel difference exceeds this error, default infinity ⚠️

🌈 Actions: 🌈

  • --create GEOM NCHANS β€” Create a blank image ✨
  • --pattern NAME GEOM NCHANS β€” Create a patterned image. Pattern name choices: black, constant, fill, checker, noise 🎨
  • --kernel NAME GEOM β€” Create a centered convolution kernel 🧠
  • --capture β€” Capture an image (options: camera=%d) πŸ“Έ
  • --diff β€” Print report on the difference of two images (modified by --fail, --failpercent, --hardfail, --warn, --warnpercent --hardwarn) πŸ“Š
  • --pdiff β€” Print report on the Yee perceptual difference of two images (modified by --fail, --failpercent, --hardfail, --warn, --warnpercent --hardwarn) πŸ“Š
  • --flipdiff β€” [EXPERIMENTAL] Compute FLIP perceptual difference of two images (options: hdr=1, colormap=NAME, ppd=67.02, maxluminance=2.0) πŸ§ͺ
  • --add β€” Add two images βž•
  • --addc VAL β€” Add to all channels a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) βž•
  • --sub β€” Subtract two images βž–
  • --subc VAL β€” Subtract from all channels a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) βž–
  • --scale β€” Scale all channels of one image by the single channel of another image βš–οΈ
  • --mul β€” Multiply two images βœ–οΈ
  • --mulc VAL β€” Multiply the image values by a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) βœ–οΈ
  • --div β€” Divide first image by second image βž—
  • --divc VAL β€” Divide the image values by a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) βž—
  • --mad β€” Multiply two images, add a third ✨
  • --invert β€” Take the color inverse (subtract from 1) (options: chbegin=0, chend=3 πŸ”„
  • --abs β€” Take the absolute value of the image pixels πŸ’―
  • --absdiff β€” Absolute difference between two images πŸ’―
  • --absdiffc VAL β€” Absolute difference versus a scalar or per-channel constant (e.g.: 0.5 or 1,1.25,0.5) πŸ’―
  • --powc VAL β€” Raise the image values to a scalar or per-channel power (e.g.: 2.2 or 2.2,2.2,2.2,1.0) ⚑
  • --noise β€” Add noise to an image (options: type=gaussian:mean=0:stddev=0.1, type=uniform:min=0:max=0.1, type=salt:value=0:portion=0.1, seed=0 πŸŽ›οΈ
  • --chsum β€” Turn into 1-channel image by summing channels (options: weight=r,g,...) 🎚️
  • --colormap MAPNAME β€” Color map based on channel 0 (arg: "inferno", "viridis", "magma", "turbo", "plasma", "blue-red", "spectrum", "heat", or comma-separated list of RGB triples) 🌈
  • --cryptomatte-colors NAME β€” Convert the named cryptomatte channels into a color matte image 🎨
  • --crop GEOM β€” Set pixel data resolution and offset, cropping or padding if necessary (WxH+X+Y or xmin,ymin,xmax,ymax) βœ‚οΈ
  • --croptofull β€” Crop or pad to make pixel data region match the "full" region πŸ–ΌοΈ
  • --trim β€” Crop to the minimal ROI containing nonzero pixel values βœ‚οΈ
  • --cut GEOM β€” Cut out the ROI and reposition to the origin (WxH+X+Y or xmin,ymin,xmax,ymax) βœ‚οΈ
  • --paste +X+Y β€” Paste fg over bg at the given position (e.g., +100+50; '-' or 'auto' indicates using the data window position as-is; options: all=%d, mergeroi=%d) πŸ“‹
  • --pastemeta β€” Paste the metadata from the first image into the second image (options: merge=%d, pattern=REGEX) πŸ“‹
  • --mosaic WxH β€” Assemble images into a mosaic (arg: WxH; options: pad=0, fit=WxH) 🧩
  • --over β€” ’Over' composite of two images πŸ‘‘
  • --zover β€” Depth composite two images with Z channels (options: zeroisinf=%d) πŸŒ€
  • --deepmerge β€” Merge/composite two deep images πŸŒ€
  • --deepholdout β€” Hold out one deep image by another πŸŒ€
  • --rotate90 β€” Rotate the image 90 degrees clockwise πŸ”„
  • --rotate180 β€” Rotate the image 180 degrees πŸ”„
  • --rotate270 β€” Rotate the image 270 degrees clockwise (or 90 degrees CCW) πŸ”„
  • --flip β€” Flip the image vertically (top<->bottom) πŸ”„
  • --flop β€” Flop the image horizontally (left<->right) πŸ”„
  • --reorient β€” Rotate and/or flop the image to transform the pixels to match the Orientation metadata πŸ”„
  • --transpose β€” Transpose the image πŸ”„
  • --cshift +X+Y β€” Circular shift the image (e.g.: +20-10) πŸ”„
  • --resample GEOM β€” Resample (640x480, 50%) (options: interp=0) πŸ”
  • --resize GEOM β€” Resize (640x480, 50%) (options: from=<geom>, to=<geom>, filter=%s, highlightcomp=%d, edgeclamp=%d) πŸ”
  • --fit GEOM β€” Resize to fit within a window size (options: filter=%s, pad=%d, fillmode=%s, exact=%d, highlightcomp=%d) πŸ”
  • --pixelaspect ASPECT β€” Scale up the image's width or height to match the given pixel aspect ratio (options: filter=%s, highlightcomp=%d) πŸ“
  • --rotate DEGREES β€” Rotate pixels (degrees clockwise) around the center of the display window (options: filter=%s, center=%f,%f, recompute_roi=%d, highlightcomp=%d πŸ”„
  • --warp MATRIX β€” Warp pixels (argument is a 3x3 matrix, separated by commas) (options: filter=%s, recompute_roi=%d, highlightcomp=%d) πŸŒ€
  • --st_warp β€” Warp the first image using normalized "st" coordinates from the second image (options: filter=%s, chan_s=0, chan_t=1, flip_s=0, flip_t=0) πŸŒ€
  • --convolve β€” Convolve with a kernel 🧠
  • --blur WxH β€” Blur the image (options: kernel=name) 🌫️
  • --median WxH β€” Median filter the image 🌫️
  • --dilate WxH β€” Dilate (area maximum) the image 🌫️
  • --erode WxH β€” Erode (area minimum) the image 🌫️
  • --unsharp β€” Unsharp mask (options: kernel=gaussian, width=3, contrast=1, threshold=0) 🌫️
  • --laplacian β€” Laplacian filter the image 🌫️
  • --normalize β€” Normalize the image (options: incenter=0.5, outcenter=0.5, scale=0.5) πŸ“Š
  • --fft β€” Take the FFT of the image πŸ“ˆ
  • --ifft β€” Take the inverse FFT of the image πŸ“‰
  • --polar β€” Convert complex (real,imag) to polar (amplitude,phase) 🧭
  • --unpolar β€” Convert polar (amplitude,phase) to complex (real,imag) 🧭
  • --fixnan STRATEGY β€” Fix NaN/Inf values in the image (choices: none, black, box3, error) πŸš‘
  • --fillholes β€” Fill in holes (where alpha is not 1) πŸ•³οΈ
  • --max β€” Pixel-by-pixel max of two images πŸ“ˆ
  • --maxc VAL β€” Max all values with a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) πŸ“ˆ
  • --maxchan β€” Maximum of all channels of the image πŸ“ˆ
  • --min β€” Pixel-by-pixel min of two images πŸ“‰
  • --minc VAL β€” Min all values with a scalar or per-channel constants (e.g.: 0.5 or 1,1.25,0.5) πŸ“‰
  • --minchan β€” Minimum of all channels of the image πŸ“‰
  • --clamp β€” Clamp values (options: min=..., max=..., clampalpha=0) πŸ“
  • --contrast β€” Remap values (options: black=0..., white=1..., sthresh=0.5..., scontrast=1.0..., gamma=1, clamp=0|1) 🎚️
  • --saturate SCALE β€” Scale saturation of the color channels 🌈
  • --rangecompress β€” Compress the range of pixel values with a log scale (options: luma=0|1) πŸ“‰
  • --rangeexpand β€” un-rangecompresses your pixel values right back onto a linear scale (options: luma=0|1)
  • --line X1,Y1,X2,Y2,... β€” renders a poly-line, so a whole string of connected segments (options: color=)
  • --point X1,Y1,X2,Y2,... β€” renders points, lil dots, no connecting line bestie (options: color=)
  • --box X1,Y1,X2,Y2 β€” renders a box (options: color=)
  • --fill GEOM β€” fills a region (options: color=)
  • --text TEXT β€” renders text straight into the current image (options: x=, y=, size=, color=)
  • --demosaic β€” demosaics, obviously (options: pattern=%s, algorithm=%s, layout=%s, white_balance=%f:R,G1,G2,B)

πŸŽ€ Manipulating channels or subimages πŸŽ€

  • --ch CHANLIST β€” selects or shuffles channels. Think "R,G,B", "B,G,R", "2,3,4" β€” yes you can go by name or by number, we don't gatekeep
  • --nchannels N β€” forces the current image to have exactly N channels (it pads with 0.0 wherever it needs to, no drama)
  • --chappend β€” appends the channels of the last two images together
  • --unmip β€” discards everything except the top level of a MIPmap
  • --selectmip MIPLEVEL β€” picks out just one MIP level (0 = highest res, so level 0 is the main character)
  • --subimage SUBIMAGEINDEX β€” selects just one subimage, by index or by name (options: delete=1)
  • --sisplit β€” splits the top image's subimages out into separate images
  • --siappend β€” appends the last two images into one multi-subimage image
  • --siappendall β€” appends all the images on the stack into a single multi-subimage image
  • --layersplit β€” splits the top image's channel-name-based layers into separate images sitting on the stack
  • --deepen β€” deepens a normal 2D image into deep
  • --flatten β€” flattens a deep image back to non-deep
  • --thumbnail-get β€” extracts an embedded thumbnail (options: fail=, index=)
  • --thumbnail-set β€” attaches the top image as the thumbnail of the image sitting below it

πŸ’… Image stack manipulation πŸ’…

  • --label %s β€” labels the top image
  • --dup β€” duplicates the current image (pushes a copy onto the stack)
  • --swap β€” swaps the top two images on the stack.
  • --pop β€” throws away the current image
  • --popbottom β€” throws away the image on the bottom of the stack
  • --stackreverse β€” throws away the image on the bottom of the stack (yeah, same wording as --popbottom, the manpage said what it said πŸ™ˆ)
  • --stackextract INDEX β€” moves an indexed stack item to the top of the stack
  • --stackclear β€” removes all images from the stack, leaving it completely empty

🌈 Color management 🌈

  • --colorconfiginfo β€” prints extensive details about your color management configuration
  • --colorconfig FILENAME β€” explicitly specifies an OCIO configuration file
  • --iscolorspace COLORSPACE β€” sets the assumed color space, and note: it does not alter any pixels
  • --tocolorspace COLORSPACE β€” converts the current image's pixels to a named color space
  • --colorconvert SRC DST β€” converts pixels from src to dst color space (options: key=, value=, unpremult=, strict=)
  • --ccmatrix MATRIXVALS β€” color converts pixels with a 3x3 or 4x4 matrix (options: unpremult=,transpose=)
  • --ociolook LOOK β€” applies the named OCIO look (options: from=, to=, inverse=, key=, value=, unpremult=)
  • --ociodisplay DISPLAY VIEW β€” applies the named OCIO display and view (options: from=, looks=, key=, value=, unpremult=, inverse=)
  • --ociofiletransform FILENAME β€” applies the named OCIO filetransform (options: inverse=, unpremult=)
  • --ocionamedtransform NAME β€” applies the named OCIO namedtransform (options: inverse=, key=, value=, unpremult=)
  • --unpremult β€” divides all the color channels of the current image by the alpha, which is how you "un-premultiply"
  • --premult β€” multiplies all the color channels of the current image by the alpha
  • --repremult β€” multiplies all the color channels of the current image by the alpha, but it does not crush alpha=0 pixels to black. subtle but iconic, honestly
  • --iccwrite FILENAME β€” outputs the current image's ICC profile as its own separate file
  • --iccread FILENAME β€” adds the contents of that file to the top image as its ICC profile
  • --cicp CICP β€” sets or modifiy CICP metadata for the output formats that support it (e.g., "12,16,0,1")

okay and now for the receipts, the build deets, the whole "who even am I" of this particular binary πŸ’–

Input formats supported:

bmp, cineon, dds, dicom, dpx, fits, gif, hdr, heif, ico, iff, jpeg, jpeg2000, jpegxl, null, openexr, openvdb, png, pnm, psd, ptex, raw, rla, sgi, softimage, targa, tiff, webp, zfile

Output formats supported:

bmp, dpx, fits, gif, hdr, heif, ico, iff, jpeg, jpeg2000, jpegxl, null, openexr, png, pnm, rla, sgi, targa, term, tiff, webp, zfile

OpenColorIO 2.4.2 Color config: ocio://default β€” run oiiotool --colorconfiginfo for a full color management inventory.

Filters available:

box, triangle, gaussian, sharp-gaussian, catmull-rom, blackman-harris, sinc, lanczos3, radial-lanczos3, nuke-lanczos6, mitchell, bspline, disk, cubic, keys, simon, rifman

And here's the build report card 🫢

OIIO 3.1.18.1 | Linux/x86_64 Build compiler: gcc 16.2 |
C++17/201703 HW features enabled at build: sse2 No CUDA support
(disabled / unavailable at build time)

Dependencies:

BZip2 1.0.8, DCMTK 3.6.9, FFmpeg NONE, fmt 11.2.0,
Freetype 2.14.3, GIF 6.1.3, Imath 3.1.12, JXL 0.11.2, libdeflate
1.26, Libheif 1.23.5, libjpeg-turbo 3.1.3, LibRaw 0.22.2, libuhdr
1.4.0, OpenColorIO 2.4.2, OpenCV 4.13.0, OpenEXR 3.2.4, OpenGL,
OpenJPEG 2.5.4, openjph 0.25.3, OpenVDB 13.0.0, PNG 1.6.58, Ptex
2.5, pugixml 1.16, pybind11 3.0.4, Python3 3.14.7, Qt6 6.11.2,
Robinmap, TBB 2020.3, TIFF 4.7.2, WebP 1.6.0, ZLIB 1.3.1

Running on 8 cores 29.3GB

sse2,sse3,ssse3,sse41,sse42,avx,avx2,avx512f,avx512dq,avx512ifma,avx512cd,avx512bw,avx512vl,fma,f16c,popcnt,rdrand

No compute specific hardware enabled.

Full OIIO documentation can be found at https://docs.openimageio.org


πŸ’€ no cap, the CUDA thing is real β€” no CUDA support (disabled / unavailable at build time), so don't go expecting GPU compute magic from this build.

okay that's genuinely the whole page bestie, and it's oiiotool(1) from the oiiotool source, dated 05 October 2026 ✨ go forth and composite, you absolute legend πŸ‘‘πŸ’…πŸ¦‹

πŸ“¦ where this page comes from