利用python編寫一個圖片主色轉(zhuǎn)換的腳本
前言
最近由于項目特需老是替換主題顏色,同時app里一些資源icon圖片主色也要改,美工不提供切圖只能靠自己了,開始想在iconfont上面找但是數(shù)量比較多太浪費時間,然后就想到python的Pillow在圖像處理方便很強(qiáng)大。
Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強(qiáng)大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作等。
本文就編寫了一個批量替換圖片主色的腳本changeImageColor.py。
實現(xiàn)思路
1.pip 安裝Pillow庫引入Image類
2.在當(dāng)前目錄下創(chuàng)建存放轉(zhuǎn)換后圖片目錄
3.獲取當(dāng)前目錄路徑,以及圖片文件
4.遍歷所有圖片文件并創(chuàng)建對應(yīng)Image對象
5.獲取Image對象背景顏色rgba值
6.遍歷Image對象所有像素點
7.把不是背景像素點顏色替換為要轉(zhuǎn)換輸入顏色值
8.保存Image對象到新目錄下面
代碼實現(xiàn)
from PIL import Image
import os
class ChangeImageColor(object):
@classmethod
def startHandle(self, rgb):
# 獲取當(dāng)前路徑,并創(chuàng)建新目錄用于輸出結(jié)果image
path = os.getcwd() + '/images/res'
npath = os.getcwd() + '/images/res/result/'
if not os.path.exists(npath):
os.makedirs(npath)
else:
# 如果存在相同新目錄那么刪除下面文件
for root, dirs, files in os.walk(npath):
for file_name in files:
os.remove(npath + file_name)
# 新顏色值
nr,ng,nb = rgb
# 存放背景顏色
br,bg,bb, ba = 0, 0, 0, 0
# 遍歷目錄
for root, dirs, files in os.walk(path):
print('root: ', root) # 當(dāng)前目錄路徑
print('dirs: ', dirs) # 當(dāng)前路徑下所有子目錄
print('files: ', files) # 當(dāng)前路徑下所有非目錄子文件
# 遍歷下所有圖片文件
for file_name in files:
if file_name != '.DS_Store':
image = Image.open(root + '/' + file_name)
if image is not None:
image_width, image_height = image.size
# 遍歷Image每個像素
for i in range(image_width):
for j in range(image_height):
xy = (i,j)
# 下面是獲取像素和比較像素
color = image.getpixel(xy)
color_num = len(color)
# 判斷顏色是否有alpha值
if color_num == 4:
r, g, b, a = color
if i == 0 and j == 0:
br, bg, bb, ba = color
if br != r or bg != g or bb != b:
# 替換像素并保留alpha值
image.putpixel(xy, (nr, ng, nb,a))
elif color_num == 3:
r, g, b = color
if i == 0 and j == 0:
br, bg, bb = color
if br != r or bg != g or bb != b: image.putpixel(xy, (nr, ng, nb))
image.save(npath + file_name)
# 把16進(jìn)制轉(zhuǎn)換為rgb
@classmethod
def hex2rgb(self, hexcolor):
rgb = ((hexcolor >> 16) & 0xff,
(hexcolor >> 8) & 0xff,
hexcolor & 0xff
)
return rgb
if __name__ == '__main__':
hexColor = int(input('請輸入新16進(jìn)制顏色值:'), 16)
ChangeImageColor.startHandle(ChangeImageColor.hex2rgb(hexColor))
演示

轉(zhuǎn)換結(jié)果result 目錄下就是轉(zhuǎn)換新圖片

python真的很不錯^_^。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
使用 Python 和 Selenium 解決 Cloudflare&
Cloudflare 驗證碼是一種用于區(qū)分人類用戶和自動化機(jī)器人的功能,它是 Cloudflare 安全服務(wù)的重要組成部分,旨在防御網(wǎng)站免受自動化攻擊和濫用,這篇文章主要介紹了使用 Python 和 Selenium 解決 Cloudflare 驗證碼,需要的朋友可以參考下2024-06-06
Python基于callable函數(shù)檢測對象是否可被調(diào)用
這篇文章主要介紹了Python基于callable函數(shù)檢測對象是否可被調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
python3下使用cv2.imwrite存儲帶有中文路徑圖片的方法
今天小編就為大家分享一篇python3下使用cv2.imwrite存儲帶有中文路徑圖片的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python遠(yuǎn)程SSH庫Paramiko詳細(xì)操作
paramiko實現(xiàn)了SSHv2協(xié)議(底層使用cryptography),用于連接遠(yuǎn)程服務(wù)器并執(zhí)行相關(guān)操作,使用該模塊可以對遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,今天通過本文給大家介紹Python遠(yuǎn)程SSH庫Paramiko簡介,感興趣的朋友一起看看吧2022-05-05
Python利用glob庫實現(xiàn)輕松應(yīng)對文件和目錄管理
Python提供了glob庫,它允許我們根據(jù)特定模式匹配文件和目錄,本文將詳細(xì)介紹glob庫的用法,并通過實例演示它的各種功能,需要的可以了解一下2023-07-07

