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
informatica:linux:gimp:script [2021/09/22 15:12] joseinformatica:linux:gimp:script [2021/09/22 20:55] (current) – [Ejemplo 2 (RISK)] jose
Line 21: Line 21:
 Y ya nos aparece. Y ya nos aparece.
  
-====== Ampliar selcción ======+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: Tenemos una imagen con una selección hecha. Listamos el id de la imagen:
   > (gimp-image-list)   > (gimp-image-list)
   (1 #(12))   (1 #(12))
  
-Ahora ampliamos la selcción 20 pixels +Ahora ampliamos la selcción 20 pixels. Si devuelve #t es TRUE: 
-  gimp-selection-grow inage steps+  gimp-selection-grow image steps
  
   > (gimp-selection-grow 12 20)   > (gimp-selection-grow 12 20)
   (#t)   (#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.1632323543.txt.gz · Last modified: 2021/09/22 15:12 by jose