Sankie005's picture
Upload 434 files
c446951
import base64
import io
import os.path
import pickle
import tempfile
from typing import Generator
import cv2
import numpy as np
from PIL import Image
from _pytest.fixtures import fixture
ASSETS_DIR_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "assets"))
@fixture(scope="function")
def image_as_numpy() -> np.ndarray:
return np.zeros((128, 128, 3), dtype=np.uint8)
@fixture(scope="function")
def image_as_jpeg_bytes() -> bytes:
image = np.zeros((128, 128, 3), dtype=np.uint8)
_, encoded_image = cv2.imencode(".jpg", image)
return np.array(encoded_image).tobytes()
@fixture(scope="function")
def image_as_png_bytes() -> bytes:
image = np.zeros((128, 128, 3), dtype=np.uint8)
_, encoded_image = cv2.imencode(".png", image)
return np.array(encoded_image).tobytes()
@fixture(scope="function")
def image_as_jpeg_base64_bytes() -> bytes:
image = np.zeros((128, 128, 3), dtype=np.uint8)
_, encoded_image = cv2.imencode(".jpg", image)
payload = np.array(encoded_image).tobytes()
return base64.b64encode(payload)
@fixture(scope="function")
def image_as_jpeg_base64_string() -> str:
image = np.zeros((128, 128, 3), dtype=np.uint8)
_, encoded_image = cv2.imencode(".jpg", image)
payload = np.array(encoded_image).tobytes()
return base64.b64encode(payload).decode("utf-8")
@fixture(scope="function")
def image_as_buffer() -> Generator[io.BytesIO, None, None]:
image = np.zeros((128, 128, 3), dtype=np.uint8)
_, encoded_image = cv2.imencode(".jpg", image)
payload = np.array(encoded_image).tobytes()
with io.BytesIO() as buffer:
buffer.write(payload)
yield buffer
@fixture(scope="function")
def image_as_rgba_buffer() -> Generator[io.BytesIO, None, None]:
image = np.zeros((128, 128, 4), dtype=np.uint8)
image[:, :, -1] = 255
_, encoded_image = cv2.imencode(".png", image)
payload = np.array(encoded_image).tobytes()
with io.BytesIO() as buffer:
buffer.write(payload)
yield buffer
@fixture(scope="function")
def image_as_gray_buffer() -> Generator[io.BytesIO, None, None]:
image = np.zeros((128, 128, 1), dtype=np.uint8)
_, encoded_image = cv2.imencode(".jpg", image)
payload = np.array(encoded_image).tobytes()
with io.BytesIO() as buffer:
buffer.write(payload)
yield buffer
@fixture(scope="function")
def image_as_pickled_bytes() -> bytes:
image = np.zeros((128, 128, 3), dtype=np.uint8)
return pickle.dumps(image)
@fixture(scope="function")
def image_as_pickled_bytes_rgba() -> bytes:
image = np.zeros((128, 128, 4), dtype=np.uint8)
image[:, :, -1] = 255
return pickle.dumps(image)
@fixture(scope="function")
def image_as_pickled_bytes_gray() -> bytes:
image = np.zeros((128, 128, 1), dtype=np.uint8)
return pickle.dumps(image)
@fixture(scope="function")
def image_as_pillow() -> Image.Image:
return Image.new(mode="RGB", size=(128, 128), color=(0, 0, 0))
@fixture(scope="function")
def empty_local_dir() -> Generator[str, None, None]:
with tempfile.TemporaryDirectory() as tmp_dir:
yield tmp_dir
@fixture(scope="function")
def image_as_local_path() -> Generator[str, None, None]:
with tempfile.TemporaryDirectory() as tmp_dir:
file_path = os.path.join(tmp_dir, "some_image.jpg")
image = np.zeros((128, 128, 3), dtype=np.uint8)
cv2.imwrite(file_path, image)
yield file_path
@fixture(scope="function")
def example_text_file() -> str:
return os.path.join(ASSETS_DIR_PATH, "example_text_file.txt")