From 242bd3eb84bb3838b7d2a65d022cb9ca505b6552 Mon Sep 17 00:00:00 2001 From: "Samuel J. Woodward" Date: Fri, 10 Jan 2025 09:14:15 -0500 Subject: [PATCH] failure to decode an io object as an image raises an exception --- deepface/commons/image_utils.py | 2 ++ tests/test_represent.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/deepface/commons/image_utils.py b/deepface/commons/image_utils.py index 10d177f..9c7a21f 100644 --- a/deepface/commons/image_utils.py +++ b/deepface/commons/image_utils.py @@ -146,6 +146,8 @@ def load_image_from_io_object(obj: IO[bytes]) -> np.ndarray: try: nparr = np.frombuffer(obj.read(), np.uint8) img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) + if img is None: + raise ValueError("Failed to decode image") return img finally: if not seekable: diff --git a/tests/test_represent.py b/tests/test_represent.py index d0a215d..1b76dfa 100644 --- a/tests/test_represent.py +++ b/tests/test_represent.py @@ -1,6 +1,7 @@ # built-in dependencies import io import cv2 +import pytest # project dependencies from deepface import DeepFace @@ -31,6 +32,10 @@ def test_standard_represent_with_io_object(): no_seek_io_embedding_objs = DeepFace.represent(io_obj) assert default_embedding_objs == no_seek_io_embedding_objs + # Confirm non-image io objects raise exceptions + with pytest.raises(ValueError, match='Failed to decode image'): + DeepFace.represent(io.BytesIO(open(__file__, 'rb').read())) + logger.info("✅ test standard represent with io object function done")