使用python-pillow替換圖片中的單一顏色
阿新 • • 發佈:2018-03-08
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替換圖片中的單一顏色