¿Qué hace cli-anything-gimp?
Una interfaz de línea de comandos con estado para edición de imágenes, basada en Pillow. Diseñada para agentes de IA y usuarios avanzados que necesitan crear y manipular imágenes sin una GUI.
Instalación
Esta CLI se instala como parte del paquete cli-anything-gimp:
pip install cli-anything-gimp
Requisitos previos:
- Python 3.10+
- Se recomienda gimp para renderizado nativo por lotes, pero las composiciones por capas pueden renderizarse mediante la ruta incorporada de Pillow cuando GIMP no está disponible o cuando hay operaciones de dibujo (
draw) diferidas.
Uso
Comandos básicos
# Mostrar ayuda
cli-anything-gimp --help
# Iniciar modo REPL interactivo
cli-anything-gimp
# Crear un nuevo proyecto
cli-anything-gimp project new -o project.json
# Ejecutar con salida JSON (para consumo por agentes)
cli-anything-gimp --json project info -p project.json
Modo REPL
Cuando se invoca sin un subcomando, la CLI entra en una sesión REPL interactiva:
cli-anything-gimp
# Ingresa comandos interactivamente con autocompletado y historial
Grupos de comandos
Proyecto
Comandos de gestión de proyectos.
| Comando | Descripción |
|---|---|
new | Crear un nuevo proyecto |
open | Abrir un proyecto existente |
save | Guardar el proyecto actual |
info | Mostrar información del proyecto |
profiles | Listar perfiles de lienzo disponibles |
json | Imprimir el proyecto en formato JSON |
Capa
Comandos de gestión de capas.
| Comando | Descripción |
|---|---|
new | Crear una nueva capa en blanco |
add-from-file | Añadir una capa desde un archivo de imagen |
list | Listar todas las capas |
remove | Eliminar una capa por índice |
duplicate | Duplicar una capa |
move | Mover una capa a una nueva posición |
set | Establecer una propiedad de capa (nombre, opacidad, visible, modo, offset_x, offset_y); los desplazamientos negativos se aceptan de forma natural |
flatten | Aplanar todas las capas visibles |
merge-down | Fusionar una capa con la que está debajo |
Lienzo
Operaciones del lienzo.
| Comando | Descripción |
|---|---|
info | Mostrar información del lienzo |
resize | Redimensionar el lienzo (sin escalar el contenido) |
scale | Escalar el lienzo y todo el contenido proporcionalmente |
crop | Recortar el lienzo a un rectángulo |
mode | Establecer el modo de color del lienzo |
dpi | Establecer los DPI del lienzo |
Grupo de Filtros
Comandos de gestión de filtros.
| Comando | Descripción |
|---|---|
list-available | Listar todos los filtros disponibles |
info | Mostrar detalles de un filtro |
add | Añadir un filtro a una capa |
remove | Eliminar un filtro por índice |
set | Establecer un parámetro de filtro |
list | Listar filtros en una capa |
Medios
Operaciones con archivos multimedia.
| Comando | Descripción |
|---|---|
probe | Analizar un archivo de imagen |
list | Listar archivos multimedia referenciados en el proyecto |
check | Verificar que todos los archivos multimedia referenciados existen |
histogram | Mostrar el análisis de histograma de una imagen |
Grupo de Exportación
Comandos de exportación/renderizado.
| Comando | Descripción |
|---|---|
presets | Listar ajustes predefinidos de exportación |
preset-info | Mostrar detalles de un ajuste predefinido |
render | Renderizar el proyecto a un archivo de imagen; las operaciones de dibujo diferidas se aplican en tiempo de renderizado |
Sesión
Comandos de gestión de sesión.
| Comando | Descripción |
|---|---|
status | Mostrar el estado de la sesión |
undo | Deshacer la última operación |
redo | Rehacer la última operación deshecha |
history | Mostrar el historial de deshacer |
Dibujar
Operaciones de dibujo (aplicadas en tiempo de renderizado).
| Comando | Descripción |
|---|---|
text | Dibujar texto en una capa (convirtiéndola en una capa de texto) |
rect | Dibujar un rectángulo (almacenado como operación de dibujo) |
Ejemplos
Crear un nuevo proyecto
Crear un archivo de proyecto gimp.
cli-anything-gimp project new -o myproject.json
# O con salida JSON para uso programático
cli-anything-gimp --json project new -o myproject.json
Sesión REPL interactiva
Iniciar una sesión interactiva con soporte de deshacer/rehacer.
cli-anything-gimp
# Ingresa comandos interactivamente
# Usa 'help' para ver comandos disponibles
# Usa 'undo' y 'redo' para navegar el historial
Exportar proyecto
Exportar el proyecto a un formato de salida final.
cli-anything-gimp --project myproject.json export render output.png --overwrite
Flujo de trabajo con composición por capas
Para composiciones con muchas superposiciones:
cli-anything-gimp --project poster.gimp-cli.json layer set 0 offset_x -48
cli-anything-gimp --project poster.gimp-cli.json layer set 0 offset_y 24
cli-anything-gimp --project poster.gimp-cli.json draw text --layer 0 --text "Noche de lanzamiento" --x 96 --y 120 --size 72 --color "#f6f1e8"
cli-anything-gimp --project poster.gimp-cli.json export render output.png --overwrite
Notas:
layer setahora acepta valores negativos deoffset_xyoffset_ytanto en modo comando como en modo REPL.draw textydraw rectson operaciones de tiempo de renderizado. Trata la imagen exportada, no solo el JSON del proyecto, como lo que se debe revisar.- Para proyectos con operaciones de dibujo diferidas, se espera que la ruta de renderizado de Pillow sea la opción estable por defecto incluso si GIMP está instalado.
Gestión de estado
La CLI mantiene el estado de la sesión con:
- Deshacer/Rehacer: Hasta 50 niveles de historial
- Persistencia del proyecto: Guardar/cargar el estado del proyecto como JSON
- Seguimiento de sesión: Rastrear modificaciones y cambios
Formatos de salida
Todos los comandos admiten modos de salida dual:
- Legible por humanos (por defecto): Tablas, colores, texto formateado
- Legible por máquina (bandera
--json): JSON estructurado para consumo por agentes
# Salida humana
cli-anything-gimp project info -p project.json
# Salida JSON para agentes
cli-anything-gimp --json project info -p project.json
Para agentes de IA
Al usar esta CLI de forma programática:
- Usa siempre la bandera
--jsonpara obtener salida analizable - Revisa los códigos de retorno - 0 para éxito, distinto de cero para errores
- Analiza stderr para mensajes de error en caso de fallo
- Usa rutas absolutas para todas las operaciones con archivos
- Verifica que las salidas existan después de operaciones de exportación
- Revisa las salidas renderizadas después de cambios de desplazamiento, dibujo, modo de fusión o filtros, en lugar de confiar solo en el estado guardado del proyecto
Más información
- Documentación completa: Ver README.md en el paquete
- Cobertura de pruebas: Ver TEST.md en el paquete
- Metodología: Ver HARNESS.md en cli-anything-plugin
Versión
1.0.0