Repository: imageio/imageio

Issue:
It does not seem to support avif image format 
```
import imageio.v3 as iio
im=iio.imread('51.avif')
```

_OSError                                   Traceback (most recent call last)
[<ipython-input-4-2fb2e37d23e4>](https://localhost:8080/#) in <cell line: 2>()
      1 import imageio.v3 as iio
----> 2 im=iio.imread('51.avif')

1 frames
[/usr/local/lib/python3.10/dist-packages/imageio/v3.py](https://localhost:8080/#) in imread(uri, index, plugin, extension, format_hint, **kwargs)
     51         call_kwargs["index"] = index
     52 
---> 53     with imopen(uri, "r", **plugin_kwargs) as img_file:
     54         return np.asarray(img_file.read(**call_kwargs))
     55 

[/usr/local/lib/python3.10/dist-packages/imageio/core/imopen.py](https://localhost:8080/#) in imopen(uri, io_mode, plugin, extension, format_hint, legacy_mode, **kwargs)
    279 
    280     request.finish()
--> 281     raise err_type(err_msg)

OSError: Could not find a backend to open `51.avif`` with iomode `r`._

It's available in PIL via https://pypi.org/project/pillow-avif-plugin/ plugin

Discussion:

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 69ba5da..3d4c9d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 <!--next-version-placeholder-->
 
+## v2.32.0 (2023-11-06)
+
+### Feature
+
+* Add support for HEIF format ([#1042](https://github.com/imageio/imageio/issues/1042)) ([`ab9653b`](https://github.com/imageio/imageio/commit/ab9653bd86b34002ce5526259dbfc6a860bfb843))
+
 ## v2.31.6 (2023-10-23)
 
 ### Fix
diff --git a/imageio/__init__.py b/imageio/__init__.py
index 5b51052..500f5a1 100644
--- a/imageio/__init__.py
+++ b/imageio/__init__.py
@@ -16,7 +16,7 @@ Main website: https://imageio.readthedocs.io/
 
 # flake8: noqa
 
-__version__ = "2.31.6"
+__version__ = "2.32.0"
 
 import warnings
 
diff --git a/imageio/config/extensions.py b/imageio/config/extensions.py
index 98b2e88..46a6415 100644
--- a/imageio/config/extensions.py
+++ b/imageio/config/extensions.py
@@ -1856,7 +1856,14 @@ extension_list = [
         priority=["tifffile"],
     ),
     FileExtension(
-        name="High Efficiency Image File Format", extension=".heic", priority=["pillow"]
+        name="High Efficiency Image File Format",
+        extension=".heic",
+        priority=["pillow"],
+    ),
+    FileExtension(
+        name="AV1 Image File Format",
+        extension=".avif",
+        priority=["pillow"],
     ),
 ]
 extension_list.sort(key=lambda x: x.extension)
diff --git a/imageio/plugins/pillow.py b/imageio/plugins/pillow.py
index f1c1f80..83616cf 100644
--- a/imageio/plugins/pillow.py
+++ b/imageio/plugins/pillow.py
@@ -83,6 +83,14 @@ class PillowPlugin(PluginV3):
         else:
             register_heif_opener()
 
+        # Register AVIF opener for Pillow
+        try:
+            from pillow_heif import register_avif_opener
+        except ImportError:
+            pass
+        else:
+            register_avif_opener()
+
         self._image: Image = None
         self.images_to_write = []
 
diff --git a/setup.py b/setup.py
index 88f6aaf..821d7b8 100644
--- a/setup.py
+++ b/setup.py
@@ -99,7 +99,7 @@ plugins = {
     "swf": [],
     "tifffile": ["tifffile"],
     "pyav": ["av"],
-    "heif": ["pillow-heif"],
+    "pillow-heif": ["pillow-heif"],
 }
 
 cpython_only_plugins = {


Test patch:
diff --git a/tests/test_pillow.py b/tests/test_pillow.py
index 2c3cd76..b4ddff2 100644
--- a/tests/test_pillow.py
+++ b/tests/test_pillow.py
@@ -712,3 +712,10 @@ def test_heif_remote():
     url = "http://github.com/tigranbs/test-heic-images/raw/master/image4.heic"
     im = iio.imread(url, plugin="pillow")
     assert im.shape == (476, 700, 4)
+
+
+@pytest.mark.needs_internet
+def test_avif_remote():
+    url = "https://github.com/link-u/avif-sample-images/raw/master/fox.profile0.10bpc.yuv420.avif"
+    im = iio.imread(url, plugin="pillow")
+    assert im.shape == (800, 1204, 3)