成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編寫 GIMP 腳本使圖像處理更快

開源
通過向一批圖像添加效果來學習 GIMP 的腳本語言 Script-Fu。GIMP 是一個很棒的開源圖像編輯器。盡管我已經使用了多年,但從未研究過其批處理功能或 Script-Fu 菜單。這是探索它們的絕好機會。

通過向一批圖像添加效果來學習 GIMP 的腳本語言 Script-Fu。

前一段時間,我想給方程圖片加一個黑板式的外觀。我開始是使用 GIMP 來處理的,我對結果很滿意。問題是我必須對圖像執行幾個操作,當我想再次使用此樣式,不想對所有圖像重復這些步驟。此外,我確信我會很快忘記這些步驟。

 

傅立葉變換方程式(Cristiano Fontana,[CC BY-SA 4.0] 4

GIMP 是一個很棒的開源圖像編輯器。盡管我已經使用了多年,但從未研究過其批處理功能或 Script-Fu 菜單。這是探索它們的絕好機會。

什么是 Script-Fu?

Script-Fu 是 GIMP 內置的腳本語言。是一種基于 Scheme 的編程語言。如果你從未使用過 Scheme,請嘗試一下,因為它可能非常有用。我認為 Script-Fu 是一個很好的入門方法,因為它對圖像處理具有立竿見影的效果,所以你可以很快感覺到自己的工作效率的提高。你也可以使用 Python 編寫腳本,但是 Script-Fu 是默認選項。

為了幫助你熟悉 Scheme,GIMP 的文檔提供了深入的 教程。Scheme 是一種類似于 Lisp 的語言,因此它的主要特征是使用 前綴 表示法和 許多括號。函數和運算符通過前綴應用到操作數列表中:

  1. (函數名 操作數 操作數 ...)
  2.  
  3. (+ 2 3)
  4. 返回 5
  5.  
  6. (list 1 2 3 5)
  7. 返回一個列表,包含 1 2、 3 5

我花了一些時間才找到完整的 GIMP 函數列表文檔,但實際上很簡單。在 Help 菜單中,有一個 Procedure Browser,其中包含所有可用的函數的豐富詳盡文檔。

 

GIMP Procedure Browser

使用 GIMP 的批處理模式

你可以使用 -b 選項以批處理的方式啟動 GIMP。-b 選項的參數可以是你想要運行的腳本,或者用一個 - 來讓 GIMP 進入交互模式而不是命令行模式。正常情況下,當你啟動 GIMP 的時候,它會啟動圖形界面,但是你可以使用 -i 選項來禁用它。

開始編寫你的第一個腳本

創建一個名為 chalk.scm 的文件,并把它保存在 Preferences 窗口中 Folders 選項下的 Script 中指定的 script 文件夾下。就我而言,是在 $HOME/.config/GIMP/2.10/scripts。

在 chalk.scm 文件中,寫入下面的內容:

  1. (define (chalk filename grow-pixels spread-amount percentage)
  2. (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
  3. (drawable (car (gimp-image-get-active-layer image)))
  4. (new-filename (string-append "modified_" filename)))
  5. (gimp-image-select-color image CHANNEL-OP-REPLACE drawable '(0 0 0))
  6. (gimp-selection-grow image grow-pixels)
  7. (gimp-context-set-foreground '(0 0 0))
  8. (gimp-edit-bucket-fill drawable BUCKET-FILL-FG LAYER-MODE-NORMAL 100 255 TRUE 0 0)
  9. (gimp-selection-none image)
  10. (plug-in-spread RUN-NONINTERACTIVE image drawable spread-amount spread-amount)
  11. (gimp-drawable-invert drawable TRUE)
  12. (plug-in-randomize-hurl RUN-NONINTERACTIVE image drawable percentage 1 TRUE 0)
  13. (gimp-file-save RUN-NONINTERACTIVE image drawable new-filename new-filename)
  14. (gimp-image-delete image)))

定義腳本變量

在腳本中, (define (chalk filename grow-pixels spread-amound percentage) ...) 函數定義了一個名叫 chalk 的新函數。它的函數參數是 filenamegrow-pixels、spread-amound 和 percentage。在 define 中的所有內容都是 chalk 函數的主體。你可能已經注意到,那些名字比較長的變量中間都有一個破折號來分割。這是類 Lisp 語言的慣用風格。

(let* ...) 函數是一個特殊過程procedure,可以讓你定義一些只有在這個函數體中才有效的臨時變量。臨時變量有 image、drawable 以及 new-filename。它使用 gimp-file-load 來載入圖片,這會返回它所包含的圖片的一個列表。并通過 car 函數來選取第一項。然后,它選擇第一個活動層并將其引用存儲在 drawable 變量中。最后,它定義了包含圖像新文件名的字符串。

為了幫助你更好地了解該過程,我將對其進行分解。首先,啟動帶 GUI 的 GIMP,然后你可以通過依次點擊 Filters → Script-Fu → Console 來打開 Script-Fu 控制臺。 在這種情況下,不能使用 let *,因為變量必須是持久的。使用 define 函數定義 image 變量,并為其提供查找圖像的正確路徑:

  1. (define image (car (gimp-file-load RUN-NONINTERACTIVE "Fourier.png" "Fourier.png")))

似乎在 GUI 中什么也沒有發生,但是圖像已加載。 你需要通過以下方式來讓圖像顯示:

  1. (gimp-display-new image)

 

GUI with the displayed image

現在,獲取活動層并將其存儲在 drawable 變量中:

  1. (define drawable (car (gimp-image-get-active-layer image)))

最后,定義圖像的新文件名:

  1. (define new-filename "modified_Fourier.png")

運行命令后,你將在 Script-Fu 控制臺中看到以下內容:

 

Script-Fu console

在對圖像執行操作之前,需要定義將在腳本中作為函數參數的變量:

  1. (define grow-pixels 2)
  2. (define spread-amount 4)
  3. (define percentage 3)

處理圖片

現在,所有相關變量都已定義,你可以對圖像進行操作了。 腳本的操作可以直接在控制臺上執行。第一步是在活動層上選擇黑色。顏色被寫成一個由三個數字組成的列表,即 (list 0 0 0) 或者是 '(0 0 0):

  1. (gimp-image-select-color image CHANNEL-OP-REPLACE drawable '(0 0 0))

 

Image with the selected color

擴大選取兩個像素:

  1. (gimp-selection-grow image grow-pixels)

Image with the selected color

將前景色設置為黑色,并用它填充選區:

  1. (gimp-context-set-foreground '(0 0 0))
  2. (gimp-edit-bucket-fill drawable BUCKET-FILL-FG LAYER-MODE-NORMAL 100 255 TRUE 0 0)

 

Image with the selection filled with black

刪除選區:

  1. (gimp-selection-none image)

Image with no selection

隨機移動像素:

  1. (plug-in-spread RUN-NONINTERACTIVE image drawable spread-amount spread-amount)

 

Image with pixels moved around

反轉圖像顏色:

  1. (gimp-drawable-invert drawable TRUE)

 

Image with pixels moved around

隨機化像素:

  1. (plug-in-randomize-hurl RUN-NONINTERACTIVE image drawable percentage 1 TRUE 0)

 

Image with pixels moved around

將圖像保存到新文件:

  1. (gimp-file-save RUN-NONINTERACTIVE image drawable new-filename new-filename)

 

傅立葉變換方程 (Cristiano Fontana, CC BY-SA 4.0)

以批處理模式運行腳本

現在你知道了腳本的功能,可以在批處理模式下運行它:

  1. gimp -i -b '(chalk "Fourier.png" 2 4 3)' -b '(gimp-quit 0)'

在運行 chalk 函數之后,它將使用 -b 選項調用第二個函數 gimp-quit 來告訴 GIMP 退出。

了解更多

 

本教程向你展示了如何開始使用 GIMP 的內置腳本功能,并介紹了 GIMP 的 Scheme 實現:Script-Fu。如果你想繼續前進,建議你查看官方文檔及其入門教程。如果你不熟悉 Scheme 或 Lisp,那么一開始的語法可能有點嚇人,但我還是建議你嘗試一下。這可能是一個不錯的驚喜。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2009-07-06 10:56:09

Linux處理圖像GIMP

2019-12-02 15:23:34

FedoraLinuxGIMP

2023-11-10 15:29:28

GIMP圖像

2011-08-05 10:43:37

重裝系統

2011-08-05 10:55:13

重裝系統

2009-03-19 20:48:45

LinuxGIMP 2.6.6

2010-02-02 13:59:11

Python編寫

2020-07-09 13:10:42

GIMP曲線文本應用

2010-02-03 09:27:21

編寫Python程序

2021-10-04 09:25:28

Flutter圖像Web

2019-05-16 14:50:32

CythonPython編程語言

2020-06-15 11:04:38

JavaScript 代碼JavaScript

2010-10-08 09:18:06

Ubuntu 10.1GPU硬件加速

2022-03-02 08:01:50

腳本數據集成

2019-01-04 10:00:48

開源技術 趨勢

2012-04-26 14:02:58

ibmdw

2022-06-21 09:26:21

Shell腳本JavaScript

2021-09-08 14:47:53

UbuntuLinux服務

2019-03-29 09:00:11

Windows 10PC模擬器

2020-06-29 19:31:46

GIMPPhotoShop開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 自拍偷拍亚洲一区 | 热re99久久精品国99热观看 | 久久久激情 | 免费观看色 | 亚洲第一区国产精品 | 亚洲手机视频在线 | 黄色大片视频 | 久久伊人免费视频 | 中文字幕精品一区二区三区在线 | 久久逼逼 | 国产精品无码久久久久 | 日韩久久精品电影 | 欧美视频一区二区三区 | 午夜一区二区三区在线观看 | 成人国产精品免费观看视频 | 国产乡下妇女做爰 | 亚洲夜射| 日本不卡视频在线播放 | 日韩欧美在线视频 | 亚洲成人动漫在线观看 | 夜夜爽99久久国产综合精品女不卡 | 成人免费大片黄在线播放 | 色狠狠一区 | 黑人巨大精品欧美一区二区一视频 | 国产毛片av| 欧美中文一区 | www..com18午夜观看 | 精品国产91久久久久久 | 精品不卡 | 欧美成人一区二区 | 欧美日韩综合 | 欧美性吧 | 国产日本精品视频 | 在线免费观看视频黄 | 福利精品| 亚洲一区精品在线 | 国产乱一区二区三区视频 | 国产精品久久久久久久久免费桃花 | 久久久91精品国产一区二区三区 | 碰碰视频 | 日韩欧美一区二区三区在线播放 |