OpenImageIO

AcademySoftwareFoundationApache-2.0活跃维护

面向 VFX 的格式无关图像读写与处理库,用统一 API 支持多种图像格式,省去为每种格式单独适配的麻烦。

Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.

v3.2.2.0发布于 2026-10-28 22:57 UTC2,398star +3 / 7 天718fork同步于 2026-11-10 11:44 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求

README 没有说明硬件要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v3.2.2.0
  1. v3.2.2.0最新正式版2026-10-28 · 2026-10-28 22:57 UTC

    Release 3.2.2.0 (Oct 28, 2026) -- compared to 3.2.1.3

    • color: Give the linear display identities their CICP codes. #5540 (by @zachlewis / Zach Lewis)
    • color: Add chromaticities and transfer gamma queries to ColorConfig. #5521 #5557 (by @zachlewis / Zach Lewis)
    • color: Resolve namespaced Color Interop IDs. #5546 (by @zachlewis / Zach Lewis)
    • color: Convert to and from Color Interop IDs the config lacks. #5547 (by @zachlewis / Zach Lewis)
    • color: Preserve gamma conversion order with OCIO 2.3 and 2.4. #5517 (by @zachlewis / Zach Lewis)
    • color: IsData() follows OCIO's lookup and its isdata flag. #5539 (by @zachlewis / Zach Lewis)
    • color: Keep the default view transform when copying configs on OCIO < 2.3.2. #5538 (by @zachlewis / Zach Lewis)
    • color: Load the color config on first use, not on construction. #5507 (by @zachlewis / Zach Lewis)
    • ImageSpec: Carry source provenance on higher-level image specs. #5511 (by @zachlewis / Zach Lewis)
    • oiiotool: Don't read past an empty --info result. #5537 (by @zachlewis / Zach Lewis)
    • perf: Resolve the color interop ID table's names once per config. #5545 (by @zachlewis / Zach Lewis)
    • perf: Reduce cache-line contention in ImageCache lookups. #5565 (by @lgritz / Larry Gritz)
    • perf: Faster spin_mutex under contention; fix arm64 pause. #5564 #5583 (by @lgritz / Larry Gritz)
    • IBA: Properly clamp resample() channel range and Highway row stride. #5541 (by @wingfiring / JacksonSun-adsk)
    • IBA: Don't index channelnames past its size. #5607 (by @lgritz / Larry Gritz)
    • IBA: premult() rejects alpha_channel == nchannels. #5610 (by @lgritz / Larry Gritz)
    • ImageBuf: nmiplevels() returns 0 for non-ImageCache ImageBuf. #5437 (by @luna-y-kim / Luna Kim)
    • ImageInput: Reject absurd tile/display sizes, and related fixes. #5519 (by @lgritz / Larry Gritz)
    • ImageInput: Prevent integer overflow with large data window origins. #5494 (by @lgritz / Larry Gritz)
    • dicom: Fix rejected subimages, and reaching every frame. #5474 (by @lgritz / Larry Gritz)
    • dpx: Better handling of truncated pixel data. #5554 (by @lgritz / Larry Gritz)
    • dpx: Fix integer overflow in scanline buffer offset. [#5568](https://github.com/AcademySoftwareFoundation/OpenImageIO/
  2. v3.1.19.02026-10-28 · 2026-10-28 05:39 UTC
    查看更新说明

    Release 3.1.19.0 (Oct 27, 2026) -- compared to 3.1.18.1

    NOTE: This is the obsolete release family. Please upgrade to 3.2 at the earliest opportunity.

    • platform.h: Add OIIO_NOINLINE macro (complement to OIIO_FORCEINLINE). #5626 (by @lgritz / Larry Gritz)
    • ImageInput: check_open() now applies limits:resolution to the display window and tile sizes, and limits:imagesize_MB to a single tile, so tiny corrupt files can no longer trigger enormous allocations. Failed ImageBuf allocations are now handled gracefully by ImageBuf, IBA, and maketx. #5519 (by @lgritz / Larry Gritz)
    • ImageInput: Prevent integer overflow in the generic read paths for files with very large data window origins, and copy only the in-range part of partial edge tiles. #5494 (by @lgritz / Larry Gritz)
    • IBA: Don't index channelnames past its size for images with more channels than limits:channels (e.g., from channel_append). #5607 (by @lgritz / Larry Gritz)
    • oiiotool: Don't read past an empty --info result when --metamatch matches nothing. #5537 (by @zachlewis / Zach Lewis)
    • iconvert: Use a private ImageCache to gather subimage specs, fixing an abort at exit when converting to multi-subimage formats such as OpenEXR. #5508 (by @zachlewis / Zach Lewis)
    • dpx: Reader fixes: detect truncated pixel data instead of returning uninitialized buffer contents, and avoid integer overflow in scanline buffer offsets. #5554 #5568
    • dpx: Writer mishandled subimages that differ from the first, which could read past the end of a buffer and copy heap memory into the output file. Subimages of differing resolution are now rejected, and each element's descriptor comes from its own subimage. #5608
    • iff: Zero-fill the tile staging buffer before decode, so corrupt files missing tiles don't reveal stale heap data. #5466
    • jpegxl: Propagate encoder and write failures that occur at close(), reject incomplete pixel buffers, and don't leak buffered scanlines into a reused output. #5509 (by @zachlewis / Zach Lewis)
    • pnm: Reject out-of-range maxval; avoid int overflow when scaling 16-bit samples. #5592
    • sgi: Bounds check the RLE run value byte for 8 bit data. #5513
    • tiff: Int overflow safety in the TIFF writer for very large scanlines or tiles. #5613
    • build: Accept commas as well as semicolons in the OpenImageIO_{REQUIRED,OPTIONAL,BUILD_MISSING,BUILD_LOCAL}_DEPS list options. #5499
    • test: Every test now gets this build's Python bindings on PYTHONPATH, so plain ctest works without the Makefile wrapper. #5553
    • test: Add redirect_push() and redirect_pop() to runtest.py, fixing heif test failures on a second run. #5476
    • ci: Adjust for GitHub ru
  3. v3.2.1.22026-10-15 · 2026-10-15 03:58 UTC
    查看更新说明

    Release 3.2.1.2 (Oct 14, 2026) -- compared to 3.2.1.1

    No code changes, this is just a new release tag to force a Python 3.15 wheel build.

  4. v3.2.1.12026-10-03 · 2026-10-03 04:23 UTC
    查看更新说明

    Release 3.2.1.1 (Oct 2, 2026) -- compared to 3.2.1.0

    • fix(ImageInput/Output): Honor the data window origin in the image_span read/write methods. #5531
    • fix(docs): Fix oiiotool man page generation errors with gawk. #5528
  5. v3.1.18.12026-10-03 · 2026-10-03 00:51 UTC
    查看更新说明

    Release 3.1.18.1 (Oct 2, 2026) -- compared to 3.1.18.0

    • fix(ImageInput/Output): Honor the data window origin in the image_span read/write methods. #5531
    • fix(docs): Fix oiiotool man page generation errors with gawk. #5528

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    License CI CII Best Practices latest packaged version(s)

    Introduction

    Mission statement: OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation via a format-agnostic API with a feature set, scalability, and robustness needed for feature film production.

    The primary target audience for OIIO is VFX studios and developers of tools such as renderers, compositors, viewers, and other image-related software you'd find in a production pipeline.

    OpenImageIO consists of:

    • Simple but powerful ImageInput and ImageOutput APIs that provide an abstraction for reading and writing image files of nearly any format, without the calling application needing to know any of the details of these file formats, and indeed without the calling application needing to be aware of which formats are available.

    • A library that manages subclasses of ImageInput and ImageOutput that implement I/O from specific file formats, with each file format's implementation stored as a plug-in. Therefore, an application using OpenImageIO's APIs can read and write any image file for which a plugin can be found at runtime.

    • Plugins implementing I/O for several popular image file formats, including TIFF, JPEG/JFIF, JPEG XL, OpenEXR, PNG, HDR/RGBE, ICO, BMP, Targa, JPEG-2000, RMan Zfile, FITS, DDS, Softimage PIC, PNM, DPX, Cineon, IFF, OpenVDB, Ptex, Photoshop PSD, Wavefront RLA, SGI, WebP, GIF, DICOM, HEIF/HEIC/AVIF, many "RAW" digital camera formats, and a variety of movie formats (readable as individual frames). More are being developed all the time.

    • Several command line image tools based on these classes, including oiiotool (command-line format conversion and image processing), iinfo (print detailed info about images), iconvert (convert among formats, data types, or modify metadata), idiff (compare images), igrep (search images for matching metadata), and iv (an image viewer). Because these tools are based on ImageInput/ImageOutput, they work with any image formats for which ImageIO plugins are available.

    • An ImageCache class that transparently manages a cache so that it can access truly vast amounts of image data (tens of thousands of image files totaling multiple TB) very efficiently using only a tiny amount (tens of megabytes at most) of runtime memory.

    • A TextureSystem class that provides filtered MIP-map texture lookups, atop the nice caching behavior of ImageCache. This is used in commercial renderers and has been used on many large VFX and animated films.

    • ImageBuf and ImageBufAlgo functions -- a simple class for storing and manipulating whole images in memory, and a collection of the most useful computations you might want to do involving those images, including many image processing operations.

    • Python bindings for all of the major APIs.

    🏢 Project administration and Licensing

    OpenImageIO is (c) Copyright Contributors to the OpenImageIO project.

    For original code, we use the Apache-2.0 license, and for documentation, the Creative Commons Attribution 4.0 Unported License. In 2023 we asked historical users to relicense from the original BSD-3-clause license to Apache-2.0, and over 99.86% of lines of code have been relicensed to Apache-2.0. A small amount of code incorporated into this repository from other projects are covered by compatible third-party open source licenses.

    The OpenImageIO project is part of the Academy Software Foundation, a part of the Linux Foundation formed in collaboration with the Academy of Motion Picture Arts and Sciences. The technical charter and Project Governance explain how the project is run, who makes decisions, etc. Please be aware of our Code of Conduct.

    💁 User Documentation

    OpenImageIO Documentation is the best place to start if you are interested in how to use OpenImageIO, its APIs, its component programs (once they are built). There is also a PDF version.

    Additional resources:

    • User quick start is a quick example of using OpenImageIO in Python, C++, and the command line.
    • Releases -- see this for the latest release notes, also found in the CHANGES.md file.

    👷 Building and installing OpenImageIO

    🚑 Contact & reporting problems

    Simple "how do I...", "I'm having trouble", or "is this a bug" questions are best asked on the oiio-dev developer mail list. That's where the most people will see it and potentially be able to answer your question quickly (more so than a GH "issue"). For quick questions, you could also try the ASWF Slack #openimageio channel.

    A bug or build problem that you are relatively certain is a legit problem in the code, and for which you can give clear instructions for how to reproduce, should be reported as issues.

    To report a security vulnerability that is serious enough that it should not be discussed publicly until a patch is ready, please file a GitHub security advisory.

    If confidentiality precludes a public question or issue, you may contact us privately at [email protected], or for security-related issues [email protected].

    🔧 Contributing and developer documentation

    OpenImageIO welcomes code contributions, and nearly 250 people have done so over the years. We take code contributions via the usual GitHub pull request (PR) mechanism.

    • Architecture overview is a high-level description of the major classes and their relationships.
    • CONTRIBUTING has detailed instructions about the development process.
    • AI Policy decribes our policies on AI coding assistance tools.
    • ROADMAP is a high-level overview of the current development priorities for the next annual release.
    • RELEASING explains our policies and procedures for making releases. We have a major, possibly-compatibility-breaking, release annually in September/October, and minor bug fix and safe feature addition release at the beginning of every month.
    • Building the docs has instructions for building the documentation locally, which may be helpful if you are editing the documentation in nontrivial ways and want to preview the appearance.
    • Other developer documentation is in the docs/dev directory.
    • You may also have luck learning a bit about the organization and architecture of the project by reading the DeepWiki Analysis of OpenImageIO. But take it with a grain of salt -- like any LLM-generated summary, there may be inaccuracies lurking.

    ☎️ Communications channels and additional resources