From 0caa292600dfecc3cf833a632381075a97e97f31 Mon Sep 17 00:00:00 2001 From: aswanth-07 Date: Fri, 28 Aug 2026 17:40:40 +0530 Subject: [PATCH] Simplify Pillow encoder compatibility --- nerfstudio/data/utils/data_utils.py | 15 ++------------- tests/utils/test_data_utils.py | 21 ++------------------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/nerfstudio/data/utils/data_utils.py b/nerfstudio/data/utils/data_utils.py index 3427580b6..1ad67fdc1 100644 --- a/nerfstudio/data/utils/data_utils.py +++ b/nerfstudio/data/utils/data_utils.py @@ -20,20 +20,9 @@ from typing import IO, List, Tuple, Union import cv2 import numpy as np import torch -from packaging.version import Version -from PIL import Image, __version__ as PILLOW_VERSION +from PIL import Image from PIL.Image import Image as PILImage -_PILLOW_VERSION = Version(PILLOW_VERSION) - - -def _set_encoder_image(encoder, im: PILImage) -> None: - """Set the image on a Pillow raw encoder across supported Pillow versions.""" - if _PILLOW_VERSION >= Version("12.2.0"): - encoder.setimage(im.im, (0, 0) + im.size) - else: - encoder.setimage(im.im) - def pil_to_numpy(im: PILImage) -> np.ndarray: """Converts a PIL Image object to a NumPy array. @@ -49,7 +38,7 @@ def pil_to_numpy(im: PILImage) -> np.ndarray: # Unpack data e = Image._getencoder(im.mode, "raw", im.mode) - _set_encoder_image(e, im) + e.setimage(im.im, (0, 0) + im.size) # NumPy buffer for the result shape, typestr = Image._conv_type_shape(im) diff --git a/tests/utils/test_data_utils.py b/tests/utils/test_data_utils.py index 5da4e935f..e12973eb4 100644 --- a/tests/utils/test_data_utils.py +++ b/tests/utils/test_data_utils.py @@ -12,28 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from unittest.mock import Mock - import numpy as np import pytest -from packaging.version import Version from PIL import Image -from nerfstudio.data.utils import data_utils - - -@pytest.mark.parametrize("pillow_version, uses_extents", [("12.2.0", True), ("12.1.0", False)]) -def test_set_encoder_image(monkeypatch, pillow_version, uses_extents): - image = Image.new("L", (2, 2)) - encoder = Mock() - monkeypatch.setattr(data_utils, "_PILLOW_VERSION", Version(pillow_version)) - - data_utils._set_encoder_image(encoder, image) - - if uses_extents: - encoder.setimage.assert_called_once_with(image.im, (0, 0) + image.size) - else: - encoder.setimage.assert_called_once_with(image.im) +from nerfstudio.data.utils.data_utils import pil_to_numpy @pytest.mark.parametrize( @@ -49,7 +32,7 @@ def test_set_encoder_image(monkeypatch, pillow_version, uses_extents): def test_pil_to_numpy(values): image = Image.fromarray(values) - result = data_utils.pil_to_numpy(image) + result = pil_to_numpy(image) np.testing.assert_array_equal(result, values) assert result.flags.writeable