Imágenes y SVGs
Hay dos formas principales de renderizar imágenes en Manim:
ImageMobject: Renderiza imágenes en los formatos habituales (jpg, jpeg y png).SVGMobject: Un SVG es un Scalable Vector Graphics, es decir, utiliza el mismo lenguaje vectorial de puntos y curvas que losVMobjectsy, por tanto, puede tratarse como tal.
ImageMobjects
Sección titulada «ImageMobjects»Una imagen como un jpg o un png puede describirse (simplificando mucho) como una cuadrícula de píxeles, que a su vez puede trasladarse al código como una matriz compuesta por arrays de 3 o 4 dimensiones: rojo, verde, azul y alfa para la opacidad.
Por ello, Manim puede leer imagenes desde el disco y renderizarlas con apenas unas pocas líneas de código. Para ello le indicamos una ruta y Manim usa Pillow para cargar la imagen:

from manim import *from pathlib import Path
class ImageExample(Scene): def construct(self): image_example = ImageMobject(Path("assets") / "python_example_logo.jpeg")
self.add(image_example)Ah, pero como al final las imágenes son matrices de píxeles, podemos usar numpy para definir una imagen. Nosotros le definimos colores en filas y columnas e interpola donde sea necesario:

from manim import *
class ImageFromArray(Scene): def construct(self):
image = ImageMobject(np.uint8([ [[255, 0, 0], [0, 255, 0]], # First row: Red and Green [[0, 0, 255], [255, 255, 0]] # Second row: Blue and Yellow ]))
image.height = 7
self.add(image)SVGMobjects
Sección titulada «SVGMobjects»De forma similar, podemos usar archivos SVG en Manim mediante la clase SVGMobject. Internamente, Manim los trata como si fueran un VMobject, a diferencia de ImageMobject que es tratado como un Mobject.

from manim import *from pathlib import Path
class SVGExample(Scene): def construct(self): svg_example = SVGMobject(Path("assets") / "logo-vertical-alt-color-dark.svg").scale(3)
self.add(svg_example)¡Ejercicios!
Sección titulada «¡Ejercicios!»Ejercicio 1
Sección titulada «Ejercicio 1»Crea una función para que puedas renderizar una imagen a partir de una url.
Solución al ejercicio 1

from urllib import requestfrom io import BytesIOfrom PIL import Imagefrom manim import *
def image_from_url(url: str) -> ImageMobject: with request.urlopen(url) as response: img_data = response.read() pil_image = Image.open(BytesIO(img_data)) return ImageMobject(pil_image)
class ImageExercise(Scene): def construct(self): url = "https://pablogsal.com/_astro/pablo-dither-160.-XZlNx32_LQsIA.png" img = image_from_url(url) img.scale(5) self.add(img)Ejercicio 2
Sección titulada «Ejercicio 2»Crea una función para que puedas renderizar un SVG una a partir de una url.
Solución al ejercicio 2

import urllib.requestfrom pathlib import Pathfrom manim import *
def svg_from_url(url: str, **kwargs) -> SVGMobject: filename = Path.cwd() / url.split("/")[-1] if not filename.suffix == ".svg": filename = filename.with_suffix(".svg")
urllib.request.urlretrieve(url, filename) return SVGMobject(str(filename), **kwargs)
class SVGExercise(Scene): def construct(self): url = "https://2026.es.pycon.org/images/logo-vertical-alt-color-dark.svg" svg = svg_from_url(url, color=RED) svg.scale(2) self.add(svg)