.. currentmodule:: torchvision.io
The :mod:`torchvision.io` module provides utilities for decoding and encoding images and videos.
Torchvision currently supports decoding JPEG, PNG, WEBP, GIF, AVIF, and HEIC images. JPEG decoding can also be done on CUDA GPUs.
The main entry point is the :func:`~torchvision.io.decode_image` function, which
you can use as an alternative to PIL.Image.open()
. It will decode images
straight into image Tensors, thus saving you the conversion and allowing you to
run transforms/preproc natively on tensors.
from torchvision.io import decode_image img = decode_image("path_to_image", mode="RGB") img.dtype # torch.uint8 # Or raw_encoded_bytes = ... # read encoded bytes from your file system img = decode_image(raw_encoded_bytes, mode="RGB")
:func:`~torchvision.io.decode_image` will automatically detect the image format, and call the corresponding decoder (except for HEIC and AVIF images, see details in :func:`~torchvision.io.decode_avif` and :func:`~torchvision.io.decode_heic`). You can also use the lower-level format-specific decoders which can be more powerful, e.g. if you want to encode/decode JPEGs on CUDA.
.. autosummary:: :toctree: generated/ :template: function.rst decode_image decode_jpeg encode_png decode_webp decode_avif decode_heic decode_gif
.. autosummary:: :toctree: generated/ :template: class.rst ImageReadMode
Obsolete decoding function:
.. autosummary:: :toctree: generated/ :template: function.rst read_image
For encoding, JPEG (cpu and CUDA) and PNG are supported.
.. autosummary:: :toctree: generated/ :template: function.rst encode_jpeg write_jpeg encode_png write_png
.. autosummary:: :toctree: generated/ :template: function.rst read_file write_file
Warning
DEPRECATED: All the video decoding and encoding capabilities of torchvision are deprecated from version 0.22 and will be removed in version 0.24. We recommend that you migrate to TorchCodec, where we'll consolidate the future decoding/encoding capabilities of PyTorch
.. autosummary:: :toctree: generated/ :template: function.rst read_video read_video_timestamps write_video
Fine-grained video API
In addition to the :mod:`read_video` function, we provide a high-performance lower-level API for more fine-grained control compared to the :mod:`read_video` function. It does all this whilst fully supporting torchscript.
.. autosummary:: :toctree: generated/ :template: class.rst VideoReader