User Tools

Site Tools


informatica:linux:gimp:script

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatica:linux:gimp:script [2021/09/22 14:48] joseinformatica:linux:gimp:script [2021/09/22 20:55] – [Ejemplo 1] jose
Line 1: Line 1:
 +Fuente: https://www.seul.org/~grumbel/gimp/script-fu/script-fu-tut.html
 +
 Para crear scripts (macros) desde Gimp se hace con Script Fu Para crear scripts (macros) desde Gimp se hace con Script Fu
  
Line 18: Line 20:
   (gimp-display-new 14)   (gimp-display-new 14)
 Y ya nos aparece. Y ya nos aparece.
 +
 +Para ver una lista de las imágenes que tenemos abiertas:
 +  (gimp-image-list)
 +  (3 #(21 20 17))
 +Nos indica que hay 3 y nos las pone por orden de la mas nueva a la mas vieja. Si queremos coger el ID de la mas nueva, sería la posición 0:
 +<code>
 +(let (
 +      (MyIMAGE (aref (cadr (gimp-image-list)) 0))
 +      )
 +  MyIMAGE
 +)
 +</code>
 +  21
 +
 +
 +====== Ampliar selección ======
 +Tenemos una imagen con una selección hecha. Listamos el id de la imagen:
 +  > (gimp-image-list)
 +  (1 #(12))
 +
 +Ahora ampliamos la selcción 20 pixels. Si devuelve #t es TRUE:
 +  gimp-selection-grow image steps
 +
 +  > (gimp-selection-grow 12 20)
 +  (#t)
      
 +Creamos un borde de 8 pixels:
 +  > (gimp-selection-border 12 8)
 +  (#t)
 +Vemos en que layer estamos:
 +  >  (gimp-image-get-active-layer 12)
 +  (2588)
 +
 +Si hacemos doble click en la layer también nos sale:
 +{{:informatica:linux:gimp:kungfu2.png|}}
 +
 +Si tuvieramos mas de una layer, las podemos listar así:
 +
 +  > (gimp-image-get-layers 12)
 +  (3 #(2593 2592 2588))
 +
 +Para rellenar en nuestra layer, que es la 2588:
 +  > (gimp-drawable-edit-fill 2588 1)
 +  (#t)
 +
 +====== Variables ======
 +Se tienen que definir en el mismo comando:
 +<code>
 +(let ((x 2))
 +  x
 +)
 +</code>
 +  2
 +Para mas de una variable con **let***
 +<code>
 +(let ((x 2)
 +      (y 6)
 +     )
 +  (+ x y)
 +)
 +</code>
 +  8
 +  
 +Para coger el resultado de un comando en una variable, se tiene que usar el comando **car** sinó, da error. Por ejemplo la función **gimp-image-get-active-layer** que devuelve **(2588)**
 +<code>
 +(let* ((MyIMAGE 12) 
 +       (MyLAYER (gimp-image-get-active-layer MyIMAGE))
 +      )
 +  MyLAYER
 +)
 +</code>
 +  (2588)
 +
 +Para poder operar con la variable MyLAYER tiene que ser sin paréntesis con la función car
 +<code>
 +(let* ((MyIMAGE 12) 
 +       (MyLAYER (car (gimp-image-get-active-layer MyIMAGE)))
 +      )
 +  MyLAYER
 +)
 +</code>
 +  2588
 +
 +====== Ejemplos ======
 +===== Ejemplo 1 =====
 +Desde una selección, amplía, hace borde y rellena con BG
 +<code>
 +(let* ((MyIMAGE 12) 
 +       (MyLAYER (car (gimp-image-get-active-layer MyIMAGE)))
 +      )
 +  (gimp-selection-grow MyIMAGE 8)
 +  (gimp-selection-border MyIMAGE 8)
 +  (gimp-drawable-edit-fill MyLAYER 1)
 +)
 +</code>
 +
 +Está seleccionado lo azul.
 +
 +{{:informatica:linux:gimp:kungfu3.png|}}
 +
 +====== Ejemplo 2 (RISK) ======
 +Creamos el borde en una nueva capa. Lo hace sobre la última imagen. Mejor solo tener una abierta.
 +<code>
 +(let* ((MyIMAGE (aref (cadr (gimp-image-list)) 0))
 +       (MyLAYER (car (gimp-image-get-active-layer MyIMAGE)))
 +      )
 +  (gimp-selection-grow MyIMAGE 8)
 +  (gimp-selection-border MyIMAGE 8)
 +  (gimp-drawable-edit-fill MyLAYER 1)
 +  (gimp-edit-copy MyLAYER)
 +  (let ((MyFLOATING (car (gimp-edit-paste MyLAYER FALSE))))
 +    (gimp-floating-sel-to-layer MyFLOATING)
 +  )
 +)
 +</code>
 +
 +Guardando selecciones:
 +<code>
 +(let* (
 +        (MyIMAGE (aref (cadr (gimp-image-list)) 0))
 +        (MyLAYER (car (gimp-image-get-active-layer MyIMAGE)))
 +        (MySELECTION1 (car (gimp-selection-save MyIMAGE)))
 +      )
 +  (gimp-selection-grow MyIMAGE 8)
 +  (gimp-selection-border MyIMAGE 8)
 +  (gimp-edit-copy MyLAYER)
 +  (let* (
 +          (MySELECTION2 (car (gimp-selection-save MyIMAGE)))
 +          (MyFLOATING (car (gimp-edit-paste MyLAYER FALSE)))
 +        )
 +    (gimp-floating-sel-to-layer MyFLOATING)
 +    (let (
 +           (MyLAYER2 (car (gimp-image-get-active-layer MyIMAGE)))
 +         )
 +        (gimp-image-select-item MyIMAGE 2 MySELECTION1)
 +        (gimp-drawable-edit-fill MyLAYER2 0)
 +        (gimp-image-select-item MyIMAGE 2 MySELECTION2)
 +        (gimp-drawable-edit-fill MyLAYER2 1)
 +    )
 +  )
 +)
 +</code>
 +
 +
 +====== Ejecutar Script ======
 +Copiamos este script en el directorio de scripts con la extensión scm. Para saber cual es el directorio de scripts, vamos a:
 +  Edit > Preferences > Folders > Scripts
 +Suele ser:
 +  <HOME>/.config/GIMP/2.10/scripts
 +En este ejemplo, aparece con el nombre **Risk** en el menu de Filters. Una vez copiado, para que aparezca en el menú, pulsamos: **Filters > Script-Fu > Refresh Scripts**
 +
 +<code>
 +( define (script-fu-risk)
 +(let* (
 +        (MyIMAGE (aref (cadr (gimp-image-list)) 0))
 +        (MyLAYER (car (gimp-image-get-active-layer MyIMAGE)))
 +        (MySELECTION1 (car (gimp-selection-save MyIMAGE)))
 +      )
 +  (gimp-selection-grow MyIMAGE 8)
 +  (gimp-selection-border MyIMAGE 8)
 +  (gimp-edit-copy MyLAYER)
 +  (let* (
 +          (MySELECTION2 (car (gimp-selection-save MyIMAGE)))
 +          (MyFLOATING (car (gimp-edit-paste MyLAYER FALSE)))
 +        )
 +    (gimp-floating-sel-to-layer MyFLOATING)
 +    (let (
 +           (MyLAYER2 (car (gimp-image-get-active-layer MyIMAGE)))
 +         )
 +        (gimp-image-select-item MyIMAGE 2 MySELECTION1)
 +        (gimp-drawable-edit-fill MyLAYER2 0)
 +        (gimp-image-select-item MyIMAGE 2 MySELECTION2)
 +        (gimp-drawable-edit-fill MyLAYER2 1)
 +        (gimp-selection-none MyIMAGE)
 +        (gimp-image-remove-channel MyIMAGE MySELECTION1)
 +        (gimp-image-remove-channel MyIMAGE MySELECTION2)
 +        (gimp-displays-flush)
 +    )
 +  )
 +)
 +)
 +
 +  (script-fu-register
 +    "script-fu-risk"                            ;func name
 +    "Risk"                                      ;menu label
 +    "Crea un Layer con el pais seleccionado
 +      de color de FG y el borde mas gordo"      ;description
 +    "Iwanttobefreak"                            ;author
 +    "copyleft 2021"                             ;copyright notice
 +    "Setember 22, 2021"                          ;date created
 +    ""                     ;image type that the script works on
 +)
 +  (script-fu-menu-register "script-fu-risk" "<Image>/Filters")
 +
 +</code>
informatica/linux/gimp/script.txt · Last modified: 2021/09/22 20:55 by jose