1. 程式人生 > >使用python-pillow替換圖片中的單一顏色

使用python-pillow替換圖片中的單一顏色

lac exc hellip asp logo owb 換圖 技術分享 技術

場景

我需要把下面一張圖片中的深黃色(255,255,0)替換成(255,204,0)。使用到pillow庫。

code

from PIL import Image
img = Image.open("logo.png") 

for i in range(2048):
    for j in range(2048):
        try:
            r,g,b,alpha = img.getpixel((i,j))
            if r==255 and g==255 and b==0:
                g=204
                img.putpixel((i,j), (r,g,b,alpha))
        except
Exception as e: continue img.show()

問題

搜索到的結果裏不包含alpha,運行有問題,print出來發現有四個值,看到自己一起寫的代碼裏第四個叫alpha,是通道,這裏用不到。
剛開始運行後底色一直由白色到粉紅色…費解,遂看了白色的RGB值(255,255,255)因此需要多加個判斷:and b==0即可。
一定要加上try語句,因為不是所有的img.getpixel((i,j))都返回4個值,比如我的例子中白色只有3個值。
重要信息 實際上我有兩張基本一樣的圖片(下圖):一張的黃色是(255,255,0),另一張的黃色是(255,204,0)+(255,255,0)這個我手動畫了一部分顏色上去。實際運行程序的時候只有第二個成功替換掉了顏色,第一張嘗試幾次都不行,原因未知。

效果

效果如下,原圖(左)新圖(右)。圖片貼紙來自picsart app。本文部分參考Python圖像處理庫:Pillow 初級教程
技術分享圖片

?

使用python-pillow替換圖片中的單一顏色