images.py 922 B

1234567891011121314151617181920212223242526272829303132333435
  1. from __future__ import annotations
  2. import numpy as np
  3. from PIL import Image
  4. from manimlib.utils.directories import get_raster_image_dir
  5. from manimlib.utils.directories import get_vector_image_dir
  6. from manimlib.utils.file_ops import find_file
  7. from typing import TYPE_CHECKING
  8. if TYPE_CHECKING:
  9. from typing import Iterable
  10. def get_full_raster_image_path(image_file_name: str) -> str:
  11. return find_file(
  12. image_file_name,
  13. directories=[get_raster_image_dir()],
  14. extensions=[".jpg", ".jpeg", ".png", ".gif", ""]
  15. )
  16. def get_full_vector_image_path(image_file_name: str) -> str:
  17. return find_file(
  18. image_file_name,
  19. directories=[get_vector_image_dir()],
  20. extensions=[".svg", ".xdv", ""],
  21. )
  22. def invert_image(image: Iterable) -> Image.Image:
  23. arr = np.array(image)
  24. arr = (255 * np.ones(arr.shape)).astype(arr.dtype) - arr
  25. return Image.fromarray(arr)