:::

白色背景變透明,但是保留物件的白色 / Remove White Background but Keep the White Color on the Object

2023-0212-150503.png

如果要把圖片的白色背景變成透明,但是要保留物件上的白色,以前都要打開影像編輯軟體,用魔術棒選色移除,但有沒有更快的做法呢?


ImageMagick

ImageMagick_logo.svg.png

https://imagemagick.org/index.php 

是的,說到用指令處理圖片,又是我們的老朋友ImageMagick啦。之前講過ImageMagick可以裁邊、可以移除白色的背景,那它可以在移除掉白色背景的同時,還能保留物件上的白色嗎?

whiteShirt.jpg

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%時就會被擋下。

d.png

執行結果如上圖。周圍白色的背景現在已經是透明色了。不過左右周圍還是有些多餘的空白處,如果要進一步裁切邊緣的話,我們可以再加上「-trim」,指令如下:

convert whiteShirt.jpg -alpha set -bordercolor white -border 1 -fill none -fuzz 3% -draw "color 0,0 floodfill" -shave 1x1 -trim d.png

d.png

結果如上圖所示,左右的空白處已經消失了。

Docker APP

https://github.com/pulipulichen/docker-app-Image-Trim

https://github.com/pulipulichen/docker-app-Image-Trim

我把此功能加入到docker-app-Image-Trim中,方便未來直接使用。以下順便說明Docker APP的用法:

首先要下載執行檔:

開啟它的是,它會檢查你的電腦有沒有安裝必要元件,包括git、Node.js、Docker (或是Docker Desktop)。如果沒有安裝,程式會提示你到指定網站下載並安裝必要套件。如果都已經正常安裝,則可以正常執行。

一般情況下,Docker APP會跳出檔案選擇視窗。請選擇欲處理的檔案,接著即可正常執行處理,同個目錄下會產生處理結果。你也可以直接把要處理的檔案用拖曳的方式丟到執行檔上。

目前我很多工具都已經改用Docker APP來開發。可以跨平臺,操作又方便,好用。


最後來問個問題:你有聽過ImageMagick嗎?你在哪裡認識它的呢?

下面留言喔!

總共1 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 這個方法有個問題,而且剛好是我最近發現的。

    如果物件周圍是透明的,那的確會移除掉透明的部分。
    但如果物件之中有透明的位置,那會變成白色,無法保持透明。

    這個問題還要想辦法處理呀。

    回覆刪除