白色背景變透明,但是保留物件的白色 / Remove White Background but Keep the White Color on the Object
如果要把圖片的白色背景變成透明,但是要保留物件上的白色,以前都要打開影像編輯軟體,用魔術棒選色移除,但有沒有更快的做法呢?
ImageMagick
https://imagemagick.org/index.php
是的,說到用指令處理圖片,又是我們的老朋友ImageMagick啦。之前講過ImageMagick可以裁邊、可以移除白色的背景,那它可以在移除掉白色背景的同時,還能保留物件上的白色嗎?
https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=31341
eddyparkinson在ImageMagick的論壇上求助到,他想要為白色的衣服去除背景,但又不希望白色的衣服也變得透明。下面snibgo就提供了解決方案:
convert whiteShirt.jpg -alpha set -bordercolor white -border 1 -fill none -fuzz 3% -draw "color 0,0 floodfill" -shave 1x1 d.png
這串指令重點在於使用了「-fill none -fuzz 3% -draw "color 0,0 floodfill"」,它會從X軸0和Y軸0的起點開始著色(這裡是設定為透明色none),但當週遭顏色差異超過3%時就會被擋下。
執行結果如上圖。周圍白色的背景現在已經是透明色了。不過左右周圍還是有些多餘的空白處,如果要進一步裁切邊緣的話,我們可以再加上「-trim」,指令如下:
convert whiteShirt.jpg -alpha set -bordercolor white -border 1 -fill none -fuzz 3% -draw "color 0,0 floodfill" -shave 1x1 -trim d.png
結果如上圖所示,左右的空白處已經消失了。
Docker APP
https://github.com/pulipulichen/docker-app-Image-Trim
我把此功能加入到docker-app-Image-Trim中,方便未來直接使用。以下順便說明Docker APP的用法:
首先要下載執行檔:
- Linux: https://pulipulichen.github.io/docker-app-Image-Trim/bin/image-trim.sh
- Windows: https://pulipulichen.github.io/docker-app-Image-Trim/bin/image-trim.exe
開啟它的是,它會檢查你的電腦有沒有安裝必要元件,包括git、Node.js、Docker (或是Docker Desktop)。如果沒有安裝,程式會提示你到指定網站下載並安裝必要套件。如果都已經正常安裝,則可以正常執行。
一般情況下,Docker APP會跳出檔案選擇視窗。請選擇欲處理的檔案,接著即可正常執行處理,同個目錄下會產生處理結果。你也可以直接把要處理的檔案用拖曳的方式丟到執行檔上。
目前我很多工具都已經改用Docker APP來開發。可以跨平臺,操作又方便,好用。
最後來問個問題:你有聽過ImageMagick嗎?你在哪裡認識它的呢?
下面留言喔!
這個方法有個問題,而且剛好是我最近發現的。
回覆刪除如果物件周圍是透明的,那的確會移除掉透明的部分。
但如果物件之中有透明的位置,那會變成白色,無法保持透明。
這個問題還要想辦法處理呀。