欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用python編寫(xiě)一個(gè)圖片主色轉(zhuǎn)換的腳本

 更新時(shí)間:2017年12月07日 08:40:28   作者:WHC  
這篇文章主要給大家介紹了關(guān)于利用python編寫(xiě)一個(gè)圖片主色轉(zhuǎn)換腳本的相關(guān)資料,主要使用的是Python中的Pillow圖像處理庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。

前言

最近由于項(xiàng)目特需老是替換主題顏色,同時(shí)app里一些資源icon圖片主色也要改,美工不提供切圖只能靠自己了,開(kāi)始想在iconfont上面找但是數(shù)量比較多太浪費(fèi)時(shí)間,然后就想到python的Pillow在圖像處理方便很強(qiáng)大。

Pillow是Python里的圖像處理庫(kù)(PIL:Python Image Library),提供了了廣泛的文件格式支持,強(qiáng)大的圖像處理能力,主要包括圖像儲(chǔ)存、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作等。

本文就編寫(xiě)了一個(gè)批量替換圖片主色的腳本changeImageColor.py。

實(shí)現(xiàn)思路

      1.pip 安裝Pillow庫(kù)引入Image類(lèi)

      2.在當(dāng)前目錄下創(chuàng)建存放轉(zhuǎn)換后圖片目錄

      3.獲取當(dāng)前目錄路徑,以及圖片文件

      4.遍歷所有圖片文件并創(chuàng)建對(duì)應(yīng)Image對(duì)象

      5.獲取Image對(duì)象背景顏色rgba值

      6.遍歷Image對(duì)象所有像素點(diǎn)

      7.把不是背景像素點(diǎn)顏色替換為要轉(zhuǎn)換輸入顏色值

      8.保存Image對(duì)象到新目錄下面

代碼實(shí)現(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每個(gè)像素
            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('請(qǐng)輸入新16進(jìn)制顏色值:'), 16)
  ChangeImageColor.startHandle(ChangeImageColor.hex2rgb(hexColor))

演示

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

python真的很不錯(cuò)^_^。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 使用 Python 和 Selenium 解決 Cloudflare 驗(yàn)證碼的問(wèn)題

    使用 Python 和 Selenium 解決 Cloudflare&

    Cloudflare 驗(yàn)證碼是一種用于區(qū)分人類(lèi)用戶(hù)和自動(dòng)化機(jī)器人的功能,它是 Cloudflare 安全服務(wù)的重要組成部分,旨在防御網(wǎng)站免受自動(dòng)化攻擊和濫用,這篇文章主要介紹了使用 Python 和 Selenium 解決 Cloudflare 驗(yàn)證碼,需要的朋友可以參考下
    2024-06-06
  • Python基于callable函數(shù)檢測(cè)對(duì)象是否可被調(diào)用

    Python基于callable函數(shù)檢測(cè)對(duì)象是否可被調(diào)用

    這篇文章主要介紹了Python基于callable函數(shù)檢測(cè)對(duì)象是否可被調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python字典和集合編程技巧大總結(jié)

    Python字典和集合編程技巧大總結(jié)

    這篇文章主要給大家介紹了關(guān)于Python字典和集合編程技巧的相關(guān)資料,Python中的字典和集合是兩種非常常用的數(shù)據(jù)結(jié)構(gòu),它們可以幫助我們更方便地管理和操作數(shù)據(jù),需要的朋友可以參考下
    2023-09-09
  • python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法

    python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法

    今天小編就為大家分享一篇python3下使用cv2.imwrite存儲(chǔ)帶有中文路徑圖片的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 使用Python對(duì)Excel進(jìn)行讀寫(xiě)操作

    使用Python對(duì)Excel進(jìn)行讀寫(xiě)操作

    學(xué)習(xí)Python的過(guò)程中,我們會(huì)遇到Excel的讀寫(xiě)問(wèn)題。這時(shí),我們可以使用xlwt模塊將數(shù)據(jù)寫(xiě)入Excel表格中,使用xlrd模塊從Excel中讀取數(shù)據(jù)。下面我們介紹如何實(shí)現(xiàn)使用Python對(duì)Excel進(jìn)行讀寫(xiě)操作。
    2017-03-03
  • Python 列表排序詳解

    Python 列表排序詳解

    這篇文章主要介紹了Python中對(duì)列表排序?qū)嵗?本文給出了9個(gè)List的排序?qū)嵗?需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)

    Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)

    這篇文章主要介紹了Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Python遠(yuǎn)程SSH庫(kù)Paramiko詳細(xì)操作

    Python遠(yuǎn)程SSH庫(kù)Paramiko詳細(xì)操作

    paramiko實(shí)現(xiàn)了SSHv2協(xié)議(底層使用cryptography),用于連接遠(yuǎn)程服務(wù)器并執(zhí)行相關(guān)操作,使用該模塊可以對(duì)遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,今天通過(guò)本文給大家介紹Python遠(yuǎn)程SSH庫(kù)Paramiko簡(jiǎn)介,感興趣的朋友一起看看吧
    2022-05-05
  • Python繪制計(jì)算機(jī)CPU占有率變化的折線(xiàn)圖

    Python繪制計(jì)算機(jī)CPU占有率變化的折線(xiàn)圖

    這篇文章主要為大家詳細(xì)介紹了Python繪制計(jì)算機(jī)CPU占有率變化的折線(xiàn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python利用glob庫(kù)實(shí)現(xiàn)輕松應(yīng)對(duì)文件和目錄管理

    Python利用glob庫(kù)實(shí)現(xiàn)輕松應(yīng)對(duì)文件和目錄管理

    Python提供了glob庫(kù),它允許我們根據(jù)特定模式匹配文件和目錄,本文將詳細(xì)介紹glob庫(kù)的用法,并通過(guò)實(shí)例演示它的各種功能,需要的可以了解一下
    2023-07-07

最新評(píng)論