十行pyhon程式碼批量更換icon顏色

❤蛋蛋發表於2017-12-22

最近老大要新啟動個專案,原來專案的大部分圖示還能用,但是要換套顏色 作為一個正在看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

原圖

十行pyhon程式碼批量更換icon顏色

設計師設計圖

十行pyhon程式碼批量更換icon顏色

程式碼生成的圖

十行pyhon程式碼批量更換icon顏色

九牛一毛的小把戲,大佬們見笑了

可以參考的(更牛逼的):

http://hereson.iteye.com/blog/2224334

http://blog.csdn.net/wuxiaobingandbob/article/details/51751899

http://python.jobbole.com/84956/

http://effbot.org/imagingbook/

相關文章