Linux中國

使用 GIMP 輕鬆地設置圖片透明度

不管你是否正在使用 PythonLua 編程一個遊戲或一個 APP,你都有可能在你的遊戲資源中使用 PNG 圖像。PNG 格式圖像的一個優點是能夠存儲一個 alpha 通道,這在一個 JPEG 格式的圖像中是不可能獲得的。alpha 在本質上是不可見的或透明的「顏色」。alpha 是你圖像 不可見 的一部分。例如,你要繪製一個甜甜圈,甜甜圈的空洞將使用 alpha 填充,你就可以看到它後面的任何東西。

一個常見的問題是如何找到一幅圖像的 alpha 部分。有時你的編程框架,不管它是 Python ArcadePygame、LÖVE,或者其它的任何東西都會檢測出 alpha 通道,(在適當地調用函數後)將其作為透明處理。這意味著它將不會在 alpha 部分來渲染新的像素,而留下甜甜圈的空洞。100% 是透明的,0% 是不透明的,在功能上起到「不可見」的作用。

有些時候,你的框架與你的圖像資源在 alpha 通道的位置上是不一致的(或者,alpha 通道根本就不存在),你在你想要透明度的地方卻得到像素。

這篇文章描述了我所知道的最可靠的方法來解決透明度的問題。

色鍵

在計算機圖形學中,有一些有助於確定每一個像素是如何渲染的值。 色度 Chrominance (或者 chroma),描述一個像素的飽和度或強度。 色鍵 chroma key 技術(也稱為 綠屏 green screening )最初是作為一種化學工藝而發展起來的,在複印一張底片時,使用一種特定的 無光澤 的顏色(最初是藍色,後來是綠色)來故意遮掩,以允許使用另一幅圖像來取代曾經有藍色或綠色屏幕的地方。這是一種簡化的解釋,但是它說明了計算機圖形學中被稱為 alpha 通道的起源。

alpha 通道是保存在圖像中的信息,用以標識要透明的像素。例如,RGB 圖像有紅、綠、藍通道。RGBA 圖像包含紅、綠、藍通道,以及 alpha 通道。alpha 值的範圍可以從 0 到 1 ,使用小數是也有效的。

因為一個 alpha 通道可以用幾種不同的方法表達,因此依賴於嵌入的 alpha 通道可能是有問題的。作為替代方案,你可以在你的遊戲框架中選擇一種顏色並將其轉化為一個 0 的 alpha 值。要做到這一點,你必須知道在你圖像中的顏色值。

準備你的圖片

要準備一個專門為色度鍵保留明確顏色的圖形,在你最喜歡的圖片編輯器中打開圖片。我建議使用 GIMPGlimpse,但是 mtPaintPinta,甚至 Inkscape 也能很好地工作,這取決於你的圖像的性質,以及你將這些操作指南轉換到一種不同圖片編輯器工具的能力。

首先打開這幅 Tux 企鵝的圖像:

![Tux 企鵝](/data/attachment/album/202011/30/223942mb8lko10zkepee1m.png "Tux the penguin")

選擇圖片

在圖片打開後,轉到 窗口 菜單,選擇 可停靠對話框 ,接下來選擇 圖層。在 圖層 面板中 Tux 圖層上右擊。從彈出菜單中,選擇 Alpha 到選區 。如果你的圖像沒有內置的 alpha 通道,那麼你必須手動創建你自己的選區。

![Alpha 到選區](/data/attachment/album/202011/30/223842pm52mjmmmb65sbar.jpg "Alpha to selection")

為手動創建一個選區,單擊來自工具箱的 路徑 工具。

![GIMP 的路徑工具](/data/attachment/album/202011/30/223845pyxo6wdjo8xyocjc.jpg "GIMP Paths tool")

使用 路徑 工具,在圖像周圍移動滑鼠,在其輪廓的每個主要交叉點處都單擊和釋放(不要拖動)。 不要擔心沿著曲線走;只需要找到主要的交叉點和拐角。這將在每個點處創建一個節點,並在節點中間繪製一條條線段。你不需要閉合你的路徑,因此當你最後到達你開始時的交叉點時,你就完成了。

![在 GIMP 中創建一個路徑](/data/attachment/album/202011/30/223847y6zh0hdg9dky8h9d.jpg "Create a path in GIMP")

在你創建你的輪廓路徑後,轉到 窗口 菜單,選擇 可停靠對話框 ,接下來選擇 工具選項 。在 工具選項 面板中,選擇 編輯 (Ctrl) 。隨著這項操作的激活,你可以編輯你剛剛通過單擊線或單擊節點繪製的路徑,並通過調整它們來更好地適應你的圖像。你甚至能夠將直線彎曲。

![編輯路徑](/data/attachment/album/202011/30/223851vqtrktrrkrazuru5.jpg "Edit path")

現在從 窗口 > 可停靠對話框 菜單中選擇 路徑 面板。在 路徑 面板中,單擊 路徑到選區 按鈕。你的繪圖現在已經被選中了。

擴大選區

如果你覺得你的選區太緊貼了,你可以通過擴大來給予你自己的選區一些富餘。當我想在一張圖像周圍採用或加厚一個邊框時,我有時會這麼擴大選區。

為擴大一個選區,單擊 選擇 菜單,選擇 擴大 。輸入一個像素值並單擊 確定

反轉選區

你已經選擇了你的圖形,但是你真正想選擇的東西卻 不包括 你所選擇的圖像。這是因為你要創建一個 alpha 蒙版來定義圖像中的一些內容的來被其它一些內容所替換。換句話說,你需要標記那些將被轉變為不可見的像素。

為了反轉選擇區,單擊 選擇 菜單,選擇 反轉 。現在除你的圖像以外的一切東西都是被選擇的。

使用 alpha 填充

隨著選擇了除了你的圖像以外的一切東西,再選擇你想使用的顏色來指定你的 alpha 蒙版。最常用的顏色是綠色(正如你可能從術語「綠屏」中所猜到的一樣)。綠色不是什麼神奇的顏色,甚至也不是特定的綠色色調。之所以使用它是因為人們經常處理不包含綠色色素的圖像,這樣人們能夠很容易分離出綠色,而不會意外地分離出圖像中重要的部分。當然,如果你的圖像是一位綠色的外星人或一枚綠寶石或一些 確實 包含綠色的東西,那麼你應該使用一種不同的顏色。只要你所選擇的顏色是單一的單色,那麼你就可以使用你所希望的任意顏色。如果你正在處理很多圖像,你的選擇應該在所有圖像中保持一致。

![在工具箱中的前景色](/data/attachment/album/202011/30/223852kmm22i29u9lrl3r6.jpg "Foreground color in toolbox")

使用你選擇的顏色值來設置你的前景色。為確保你的選擇是精確的,使用 HTMLHSV 表示的顏色。例如,如果你正在使用純綠色,它可以在 GIMP(以及大多數的開放源碼圖像應用程序)中表示為 00ff0000 是紅色,FF 是綠色,00 是藍色,F 是最大值)。

![設置顏色值](/data/attachment/album/202011/30/223858nv4jlkjjjjkllsn6.jpg "Setting color values")

不管你選擇什麼顏色,務必記錄下 HTML 或 HSV 的值,以便你可以為每一張圖像使用完全相同的顏色。

為填充你的 alpha 蒙版,單擊 編輯 菜單,選擇 使用前景色填充

平整和導出

如果你在你的圖像周圍留下邊框,設置背景顏色來著色你想使用的邊界筆刷。這通常是黑色或白色,但是它也可以是任何適宜你遊戲審美觀的顏色。

在你設置背景顏色後,單擊 圖像 菜單,選擇 平整圖像。不管你是否添加了邊框,這樣做都是安全的。這個過程將從圖像中移除 alpha 通道,並使用背景色填充任何「透明的」像素。

![平整圖像](/data/attachment/album/202011/30/223903dek7zo9zwz45mie3.jpg "Flattening image")

你現在已經為你的遊戲引擎準備好了一張圖像。導出圖像為你的遊戲引擎喜歡的任何格式,接下來使用遊戲引擎所需要的每一個函數來將圖像導入的你的遊戲中。在的代碼中,設置 alpha 值為 00ff00(或你使用的任何顏色),接下來使用遊戲引擎的圖像轉換器來將該顏色作為 alpha 通道處理。

其它的方法

這不是唯一能在你遊戲圖像中獲取透明度的方法。查看你遊戲引擎的文檔來找出它是如何默認嘗試處理 alpha 通道的,在你不確定的時候,嘗試讓你的遊戲引擎來自動偵測圖像中透明度,然後再去編輯它。有時,你遊戲引擎的預期值和你圖像的預設值恰巧匹配,那麼你就可以直接獲取透明度,而不需要做任何額外的工作。

不過,當這些嘗試都失敗時,嘗試一下色鍵。它為電影業工作了將近 100 年,它也可以為你工作。

via: https://opensource.com/article/20/9/chroma-key-gimp

作者:Seth Kenlon 選題:lujun9972 譯者:robsean 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國