最近老大要新啟動個專案,原來專案的大部分圖示還能用,但是要換套顏色 作為一個正在看py的前端菜鳥,當然是想幫UI姐姐減輕壓力呀
整個指令碼十分簡單,用到了python的PIL褲子裡的Image模組
PIL(Python Imaging Library影象處理類庫)提供了強大的影象處理功能,以及大量有用的基本影象操作,比如影象縮放、裁剪、旋轉、顏色轉換等,同時還有簡潔的API
詳細內容就不說了,網上資料很多的
安裝方法 pip install pillow
本文主要用到了PIL裡Image模組的幾個方法:
Image.open:返回一個image物件,可以獲取image的格式大小等資訊
img = Image.open("/Users/L/Desktop/icon/1.jpg")
print(img.format, img.size, img.mode)
複製程式碼
Image.new:新建一個規定大小的RGBA影象,後面是rgba畫素值
newImg = Image.new("RGBA", (width, height), (0, 0, 0, 0))
Image.save: 儲存到指定路徑
img.getpixel((i, j)):獲取指定畫素點的rgba顏色
Img.putpixel((i, j), (r, g, b, a)):對指定畫素點進行rgba繪製
都知道每個畫素點都是RGB三種顏色或者RGBA三種顏色+透明度組成的 這裡是把天藍色改成了原諒綠,倆套迴圈會遍歷XY軸的畫素點, 如果某畫素點的blue值大於red或者grenn值即可認為是藍色
我這裡是重新生成一張圖片,然後在對應的XY畫素點生成該替換的顏色
引入os模組是為了使用檔案操作
本文針對的是含有alpha的影象,如果圖片沒有透明通道可以直接把RGBA的A去掉
執行環境:Python2.7, PIL,macOS
xColor.py
# -*- coding: UTF-8 -*-
from PIL import Image
import os
for filename in os.listdir(r"/Users/L/Desktop/newicon/"):#遍歷資料夾裡的圖片
print filename
img = Image.open("/Users/L/Desktop/icon/" + filename)
height = img.size[1] #讀取寬高
width = img.size[0]
print ('width='+str(width)+' height='+str(height))
newImg = Image.new("RGBA", (width, height), (0, 0, 0, 0)) #建立RGBA圖片
for i in range(width):
for j in range(height):
r, g, b, a = img.getpixel((i, j))
if b > g and b > r: # 對藍色進行判斷
b = 155 #新顏色
g = 205
r = 50
newImg.putpixel((i, j), (r, g, b, a))
newImg.save("/Users/L/Desktop/newicon/"+filename)#把繪製好的圖片儲存
複製程式碼
使用命令列執行程式:
在同資料夾下
python xColor.py
原圖
設計師設計圖
程式碼生成的圖
九牛一毛的小把戲,大佬們見笑了
可以參考的(更牛逼的):
http://hereson.iteye.com/blog/2224334
http://blog.csdn.net/wuxiaobingandbob/article/details/51751899
http://python.jobbole.com/84956/
http://effbot.org/imagingbook/