<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          愛(ài)我中華!很火的抖音五星紅旗國(guó)慶頭像新玩法

          共 3304字,需瀏覽 7分鐘

           ·

          2021-10-02 00:05

          作者 | 道才
          來(lái)源 | 可以叫我才哥


          國(guó)慶節(jié)終于來(lái)了,最近有個(gè)五星紅旗半透明漸變頭像很火,在抖音里、微信群里都流行起來(lái)了。

          那么,作為python玩家,是不是也要共享一下自己的力量,用python快速制作這樣的頭像呢???

          來(lái)吧,展示!

          目錄:

          • 1. 原理簡(jiǎn)介

          • 2. 實(shí)現(xiàn)步驟

            • 2.1. 讀取圖片

            • 2.2. 截取區(qū)域

            • 2.3. 設(shè)置透明漸變

            • 2.4. 粘貼到頭像并保存

          • 3. 完整代碼


          1. 原理簡(jiǎn)介

          我們看到這樣的頭像,大致是紅旗透明度漸變?nèi)缓蟾采w在自己頭像上即可。

          那么,我的思路大致是先通過(guò)紅旗圖片獲取和自己頭像尺寸一樣的區(qū)域,然后將這部分區(qū)域從左到右進(jìn)行透明度漸變?cè)鲩L(zhǎng),然后將這張圖片和頭像進(jìn)行融合,最終保存即可。

          基于這個(gè)思路,結(jié)合之前《Python基礎(chǔ)模塊:圖像處理模塊@PIL(批量分類處理圖片及添加水印)》里介紹的PIL庫(kù),我們大致可以將實(shí)現(xiàn)步驟拆分為如下幾步:

          • 讀取國(guó)旗和頭像照片 open
          • 截取國(guó)旗部分區(qū)域 crop
          • 從左到右透明度漸變 putpixel
          • 將區(qū)域粘貼到頭像 paste+resize
          • 保存新頭像 save

          既然明確了實(shí)現(xiàn)步驟,我們就開(kāi)搞吧!


          2. 實(shí)現(xiàn)步驟

          大家記得實(shí)現(xiàn)準(zhǔn)備國(guó)旗和自己頭像照片到本地哦

          后臺(tái) 回復(fù) 955,在國(guó)慶文件夾領(lǐng)取 國(guó)旗文件,或者文末添加作者微信 回復(fù) 國(guó)慶 領(lǐng)取。

          2.1. 讀取圖片

          from PIL import Image

          guoqi = Image.open('五星紅旗.png')
          touxiang = Image.open('頭像.jpg')
          五星紅旗
          頭像

          2.2. 截取區(qū)域

          由于這里我的頭像是正方形,為了方便在粘貼透明漸變國(guó)旗時(shí)更方便,需要截取正方形區(qū)域。

          # 獲取國(guó)旗的尺寸
          x,y = guoqi.size
          # 根據(jù)需求,設(shè)置左上角坐標(biāo)和右下角坐標(biāo)(截取的是正方形)
          quyu = guoqi.crop((262,100, y+62,y-100))
          五星紅旗(正方形)

          2.3. 設(shè)置透明漸變

          PIL庫(kù)中,getpixel((i, j))表示獲取(i,j)像素點(diǎn)的顏色值color,同樣我們可以通過(guò)putpixel((i, j), color)來(lái)對(duì)(i,j)像素點(diǎn)設(shè)置顏色。

          而對(duì)應(yīng)color來(lái)說(shuō),是包含四個(gè)參數(shù)的元組(R,G,B,alpha),分別是RGB值和透明度,其中透明度255表示不透明,0表示100%透明。

          了解以上這些知識(shí),我們就可以開(kāi)始進(jìn)行透明度漸變的操作了。

          本例最簡(jiǎn)單滿足需求的就是透明漸變從左到右透明度依次變高(參數(shù)值變小),考慮到從255變?yōu)? 且只能是整數(shù),這里由于微信頭像是900*900,所以我考慮的是每3個(gè)像素進(jìn)行一次透明度漸變,當(dāng)超過(guò)255之后則透明度為100%也就是對(duì)應(yīng)參數(shù)為0。

          # 獲取頭像的尺寸
          w,h = touxiang.size
          # 將區(qū)域尺寸重置為頭像的尺寸
          quyu = quyu.resize((w,h))
          # 透明漸變?cè)O(shè)置
          for i in range(w):
              for j in range(h):
                  color = quyu.getpixel((i, j))
                  alpha = 255-i//3
                  if alpha < 0:
                      alpha=0
                  color = color[:-1] + (alpha, )
                  quyu.putpixel((i, j), color)
          透明漸變

          2.4. 粘貼到頭像并保存

          需要注意粘貼的時(shí)候要保留透明背景,否則就不好玩了,等于直接全覆蓋

          touxiang.paste(quyu,(0,0),quyu)
          touxiang.save('五星紅旗半透明漸變頭像.png')


          五星紅旗國(guó)慶頭像

          當(dāng)然,我們還可以用別的透明漸變的方式,比如左上角到右下角之類的,具體這里不展開(kāi)演示了,感興趣的可以直接負(fù)責(zé)完整代碼自己測(cè)試玩玩!


          3. 完整代碼

          from PIL import Image

          # 讀取圖片
          guoqi = Image.open('五星紅旗.png')
          touxiang = Image.open('頭像.jpg')

          # 獲取國(guó)旗的尺寸
          x,y = guoqi.size
          # 根據(jù)需求,設(shè)置左上角坐標(biāo)和右下角坐標(biāo)(截取的是正方形)
          quyu = guoqi.crop((262,100, y+62,y-100))

          # 獲取頭像的尺寸
          w,h = touxiang.size
          # 將區(qū)域尺寸重置為頭像的尺寸
          quyu = quyu.resize((w,h))
          # 透明漸變?cè)O(shè)置
          for i in range(w):
              for j in range(h):
                  color = quyu.getpixel((i, j))
                  alpha = 255-i//3
                  if alpha < 0:
                      alpha=0
                  color = color[:-1] + (alpha, )
                  quyu.putpixel((i, j), color)

          # 粘貼到頭像并保存 
          touxiang.paste(quyu,(0,0),quyu)
          touxiang.save('五星紅旗半透明漸變頭像.png')

          以上就是本次全部?jī)?nèi)容,如果你喜歡,希望給我點(diǎn)個(gè)贊在看哦??!更歡迎

          瀏覽 304
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一级视频 | 黄片网站进入口 | 热久久a| www.操比 | 中文字幕国产原创 |