Go開源項目推薦:實現 Photoshop 的功能

2021-12-31 Go語言中文網

生態君今天發現一個有意思的 Go 語言項目:bild,項目地址:https://github.com/anthonynsimon/bild,Star 數 3.3k+。使用純 Go 實現圖像處理,而且儘可能使用標準庫實現。

具體都實現了哪些功能呢?

因為該項目既可以當工具使用,也可以當庫使用。不管如何,先安裝它:

go install github.com/anthonynsimon/bild@latest

在 $GOBIN 目錄下會有 bild 可執行程序(默認是 ~/go/bin 目錄下)。為了方便使用,請將該目錄加入 $PATH 中。

$ bild
A collection of parallel image processing algorithms in pure Go

Usage:
  bild [command]

Available Commands:
  adjust      adjust basic image features like brightness or contrast
  blend       blend two images together
  blur        blur an image using the specified method
  channel     channel operations on images
  effect      apply effects on images
  help        Help about any command
  histogram   histogram operations on images
  imgio       i/o operations on images
  noise       noise generators
  segment     segment an image using the specified method

Flags:
  -h, --help   help for bild

Use "bild [command] --help" for more information about a command.

01 類似 Photoshop 「圖像—>調整」下的功能

adjust:調整基本圖像功能,如亮度或對比度。

$ bild help adjust
adjust basic image features like brightness or contrast

Usage:
  bild adjust [command]

Available Commands:
  brightness  adjust the relative brightness of an image
  contrast    adjust the relative contrast of an image
  gamma       adjust the gamma of an image
  hue         adjust the hue of an image
  saturation  adjust the saturation of an image

Flags:
  -h, --help   help for adjust

Use "bild adjust [command] --help" for more information about a command.

對應的子命令功能是:

這些功能使用方法都可以通過 bild adjust xxx --help 查看。在官方文檔也有具體的圖片示例,看看對應的效果。

02 兩個圖片疊加

即 blend 功能。

$ bild help blend
blend two images together

Usage:
  bild blend [command]

Available Commands:
  add
  colorburn
  colordodge
  darken
  difference
  divide
  exclusion
  lighten
  linearLight
  linearburn
  multiply
  normal
  opacity
  overlay
  screen
  softlight
  subtract

Flags:
  -h, --help   help for blend

Use "bild blend [command] --help" for more information about a command.

並非簡單的疊加,有一對子命令可以使用。在官方文檔也有具體的圖片示例,看看對應的效果。

03 模糊

使用過 PS 的同學,應該挺喜歡「高斯模糊」。

$ bild help blur
blur an image using the specified method

Usage:
  bild blur [command]

Available Commands:
  box         apply box blur to an input image
  gaussian    apply gaussian blur to an input image

Flags:
  -h, --help   help for blur

Use "bild blur [command] --help" for more information about a command.

其中 gaussian 就是高斯模糊。

其他更多功能,不一一列舉。

如果當做庫使用,如何做?

04 當做庫使用

看官方給的一個例子:

package main

import (
    "github.com/anthonynsimon/bild/effect"
    "github.com/anthonynsimon/bild/imgio"
    "github.com/anthonynsimon/bild/transform"
)

func main() {
    img, err := imgio.Open("input.jpg")
    if err != nil {
        fmt.Println(err)
        return
    }

    inverted := effect.Invert(img)
    resized := transform.Resize(inverted, 800, 800, transform.Linear)
    rotated := transform.Rotate(resized, 45, nil)

    if err := imgio.Save("output.png", rotated, imgio.PNGEncoder()); err != nil {
        fmt.Println(err)
        return
    }
}

大家如果對圖片處理感興趣,可以好好學習這個包。既是完整的可用項目,也是一個庫,可以自己進行更多封裝、擴展。覺得不錯,可以給該項目點個 Star。

文末閱讀原文可以直達項目首頁。

推薦閱讀

我為大家整理了一份從入門到進階的Go學習資料禮包,包含學習建議:入門看什麼,進階看什麼。關注公眾號 「polarisxu」,回復 ebook 獲取;還可以回復「進群」,和數萬 Gopher 交流學習。

相關焦點

  • 【GoCN酷Go推薦】Go 類型轉換神器 cast庫
    cast 用於一致且簡單的方式在不同的 go 類型之間進行安全的轉換。
  • 【精品】Flutter百大開源項目排行榜
    CarGuo/GSYGithubAppFlutter ♥️ 5.7k超完整的Flutter項目,功能豐富,適合學習和日常使用。GSYGithubApp系列的優勢:我們目前已經擁有Flutter、Weex、ReactNative、kotlin 四個版本。
  • 在線摳圖神器推薦:Photoshop Express
    操作使用說明:1、打開Photoshop Express網站:https://photoshop.adobe.com/我們就會看到如下的界面:很清爽很乾淨。學堂君推薦的理由:1、Photoshop Express 提供常用圖片編輯功能,也有自動去背工具2、一鍵自動分析辨識背景範圍,可模糊背景或替換為特定顏色3、編輯後將相片匯出 JPG 或 PNG 格式最最最重要的 可以在線摳圖,不需要安裝插件和軟體,大大提高了設計效率
  • 來一波SpringBoot開源項目,沒有比這更簡單了
    點擊上方「Java研發軍團」關注,選擇「設為星標」下面的商城系統大多比較複雜比如 mall ,如果沒有 Java 基礎和 Spring Boot 都還沒有摸熟的話不推薦過度研究下面幾個項目或者使用這些項目當作畢業設計
  • 介紹一款Go項目熱編譯工具-gowatch
    項目編寫過程中,需要對項目不斷的進行構建go build並調試以快速發現問題,而我們每次進行手動的進行go build又太重複,所以寫了這麼一個工具gowatch來實時的監聽文件的改動並編譯運行,大大提升開發效率。
  • 周一見 | IBM:抱歉 Swift,K8s 優先、戰鬥機上的 K8s、本周開源項目推薦
    作者:bot(才雲)技術校對:星空下的文仔(才雲)日前,Fluentd v1.8.0 發布,新版本增加了新的服務發現插件和許多增強功能
  • 本周AI領域優秀開源項目分享,TinyBERT、cvat計算機視覺注釋工具等 6大開源項目
    項目特點:使用統一的實驗定義執行實驗;在本地或雲端無縫地執行實驗;管道支持以增加執行時間並降低硬體成本;Keras2和Pytorch的層調試器;自動原始碼版本控制;實驗工件(aka輸出:權重,快照等);通過具有自動構建功能的Docker容器執行實驗;
  • Rust 開源:24個絕佳框架、項目及資料庫
    Rust擁有一個無比活躍且快節奏的開源生態系統,海量貢獻者在這個系統中開展海量優質項目。And if you are asking – what can I build in Rust? The answer is almost everything.而如果你還感到困惑:我能藉助Rust打造什麼呢?答案是:它幾乎無所不能。
  • C#開源項目大全(趕快收集)
    商業協作和項目管理平臺-TeamLab網絡視頻會議軟體-VMukti馳騁工作流程引擎-ccflow【免費】正則表達式測試工具-Regex-TesterWindows-Phone-7-SDKExcel-讀寫組件-ExcelLibrary.NET集成開發環境-MonoDevelop電話軟交換機-FreeSWITCH開源作業系統-Cosmos坦克機器人戰鬥仿真引擎-RobocodeGIS控制項-MapWindow.NET
  • 伯樂:一個易用、強大的PyTorch推薦系統開源庫
    該框架實現了推薦領域不同任務的推薦模型,擁有從數據處理、模型開發、算法訓練到科學評測的一站式全流程託管。自動調參(內嵌實用超參搜索算法,支持靈活設置範圍)這個工具包可以滿足大部分推薦相關的科研需求。"伯樂"推薦系統庫將承諾持續開發維護,保持版本穩定,同時不斷規劃更多實用、強大的功能。
  • CRSLab:可能是最適合你的對話推薦系統開源庫
    隨著對話系統和推薦系統的快速發展,新方向——對話推薦系統(Conversational Recommender System,簡稱CRS)也開始了蓬勃發展,其關注於如何通過基於自然語言的對話來獲得用戶的意圖和偏好,以實現精準推薦。
  • 【後期修圖】其實沒那麼難:大話photoshop濾鏡功能
    濾鏡簡介濾鏡;主要是用來實現圖像的各種特殊效果。它在Photoshop中具有非常神奇的作用。
  • vscode-go成為Go官方子項目 | Gopher Daily (2020.06.10) ʕ◔ϖ◔ʔ
    每日一諺:The path to that directory determines the package's import path•慕課實戰課:k8s實戰 - https://coding.imooc.com/class/284.html1.Go官博:VS Code Go擴展加入Go項目
  • Oracle開源GraphPipe:幾行代碼讓你在TensorFlow部署PyTorch模型
    Oracle 希望開源 GraphPipe 可以使模型服務變得更加友好,因此通過調查當前的機器學習模型服務現狀,我們發現:模型服務網絡協議嘗試隱藏模型的實現。例如,假設你擁有一個 TensorFlow 模型,你需要使用 TensorFlow 的協議緩存伺服器(TensorFlow-serving)來執行遠程推理。
  • PhotoShop常見的52個疑難問題及解答
    (9)問: 怎樣使文字邊緣填充顏色或漸變色;答:文字邊緣填充顏色,可描邊功能。如要給文字邊緣使用漸變色,先新建一個透明層,然後選中文字,然後在圖層中選中透明層,實行描邊功能,然後把描邊的層變成選區,填上漸變色即可。
  • 最新 Android 熱門開源項目公布
    LeakCanarysquare 開源的內存洩露檢測庫。Material Dialogs 採用模塊化架構,核心模塊(core)包含了核心功能和基本功能,文本輸入框、文件選擇器、色彩選擇器、時間日期選擇器、彈出表單等功能作為擴展模塊提供,可單獨引入。
  • 本周優秀開源項目分享:基於yolov3的輕量級人臉檢測、增值稅發票OCR識別 等8大項目
    實現的功能:添加關鍵點檢測分支,使用wing loss。項目地址:https://github.com/open-mmlab/OpenSelfSupDetectron2是Facebook AI Research的下一代軟體系統,可實現最新的對象檢測算法。
  • 你好,超全的 Vue 開源項目合集,籤收一下
    歡迎指正不足和提供更多更好的vue庫,項目,方便參考和學習使用。28.vue-chartkick 傳送門:https://github.com/ankane/vue-chartkick★22 - VueJS一行代碼實現優美圖表
  • 一個用 Arduino 實現的完整項目
    收錄於話題 #開源項目route=product/product&filter_name=adkeyboard&product_id=197#.UvNglbQSHxQ  矩陣鍵盤 :https://www.sparkfun.com/products/8653模擬鍵盤 :http://www.dfrobot.com/index.php?
  • 盤點|軟體、硬體、模擬器,這九大機器人開源項目你知道嗎?
    機器人在我們的世界中正在扮演越來越重要的角色,儘管我們還沒有實現在電視劇 Jetson 中的機器人管家那樣的烏託邦式的未來,機器人學已經在許多領域取得了進展,這在五十年前是完全無法想像的。機器人復興的最大受益者毫無疑問是製造業,不過我們也看到機器人正在進入主流生活方式當中。我們許多人都擁有用來掃地、清理雨水槽和割草等等的機器人。