La parte de los tamaños está bien comentada y podría resolverse fácilmente con un sufijo o prefijo. Por ejemplo:
con una sola columna de ruta en la base de datos: 'imágenes/ejemplo'
Podría obtener diferentes tamaños de imagen con una simple manipulación de cadenas:
Ahora, ¿cómo lidiar con el formato de imagen? Podría ser webp (predeterminado) o png/jpg (el respaldo). ¿Hay alguna forma de implementarlo que no sea guardar una columna llamada 'fallback_format' en la base de datos?
puede verificar antes de tomar la imagen, si el formato está configurado con webp, lo toma, si no, toma el original y crea en el evento webp.
Puede enumerar archivos y tomar el primero, comenzando por el nombre en la ruta con las cosas que ya tiene en su base de datos, para eso podría usar el Finder de Symfony que también se usa para Laravel