<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>

          新的一年又來了,用python制作個(gè)“除夕夜倒計(jì)時(shí)”海報(bào)

          共 2976字,需瀏覽 6分鐘

           ·

          2021-01-18 19:38



          大家好,歡迎來到 Crossin的編程教室 !

          你一定在社交媒體和朋友圈里見過不少活動(dòng)或產(chǎn)品發(fā)布前的倒計(jì)時(shí)海報(bào)。

          新年伊始,馬上就快要春節(jié)了。今天我們就用python來做一組新年倒計(jì)時(shí)海報(bào)。

          本文想法源自用Python自動(dòng)化生成倒計(jì)時(shí)圖片(來源:法納斯特 | 作者:小F),并結(jié)合《python繁瑣工作自動(dòng)化》一書,增添了一些設(shè)計(jì)元素。


          000.
          效果預(yù)覽


          001.
          創(chuàng)建圖像

          RGBA 值是一組數(shù)字,

          紅、綠、藍(lán)和alpha(透明度)

          代表0(根本沒有)到255(最高)的整數(shù)


          在 Pillow 中,
          RGBA 值表示為四個(gè)整數(shù)值的元組。

          例如,紅色表示為(255,0,0,255)

          這種顏色中紅的值為最大,沒有綠和藍(lán),
          并且alpha 值最大,這意味著它完全不透明。

          綠色:(0,255,0,255)

          藍(lán)色:(0,0,255,255)

          白色是各種顏色的組合:(255,255,255,255)

          而黑色沒有任何顏色:(0,0,0,255)


          靈感來源:2019新年倒計(jì)時(shí)動(dòng)態(tài)海報(bào)系列

          Pillow 提供ImageColor.getcolor()函數(shù),
          所以你不必記住想用的顏色的RGBA值。

          該函數(shù)接受顏色名稱字符串作為第一個(gè)參數(shù),
          字符串'RGBA'作為第二個(gè)參數(shù),
          返回一個(gè)RGBA 元組。


          from?PIL?import?ImageColor
          ImageColor.getcolor('red',?'RGBA')

          運(yùn)行結(jié)果:
          (255,?0,?0,?255)


          本例中的圖像尺寸和顏色:

          尺寸:1000*2160

          顏色:(174,60,58,255)

          相關(guān)代碼如下:


          from?PIL?import?Image,?ImageDraw,?ImageFont
          import?os

          #?創(chuàng)建圖像,并設(shè)置尺寸和顏色
          im?=?Image.new('RGBA',?(1000,?2160),?(174,60,58,255))
          draw?=?ImageDraw.Draw(im)

          002.

          設(shè)置字體


          要設(shè)置字體和大小,

          我們首先將文件夾名稱保存在fontsFolde中。


          然后調(diào)用ImageFont.truetype(),

          傳入我們想要的字體的.TTF 文件,

          之后是表示字體大小的整數(shù)。


          將ImageFont.truetype()返回的Font對(duì)象

          保存在arialFont這樣的變量中,

          然后將該變量傳入text(),

          作為最后的關(guān)鍵字參數(shù)。


          #?使用使用的字體及字號(hào)
          fontsFolder?=?'D:/05.python_code/00.py_projects/new_year_last'
          font1?=?ImageFont.truetype(os.path.join(fontsFolder,?'wenzangshufang.ttf'),?580)
          font2?=?ImageFont.truetype(os.path.join(fontsFolder,?'SourceHanSerifCN-SemiBold.otf'),?90)
          font3?=?ImageFont.truetype(os.path.join(fontsFolder,?'SourceHanSerifCN-SemiBold.otf'),?180)


          003.

          繪制矩形


          rectangle(xy, fill, outline) 方法
          繪制一個(gè)矩形

          xy 參數(shù)是一個(gè)矩形元組,

          形式為(left,top, right, bottom)。


          left 和top 值指定了矩形左上角的x 和y 坐標(biāo),

          right 和bottom 指定了矩形的右下角。


          可選的fill 參數(shù)是顏色,將填充該矩形的內(nèi)部。

          可選的outline 參數(shù)是矩形輪廓的顏色。


          #?繪制矩形
          left?=?pos_x_3
          top?=?1750
          right?=?pos_x_3?+?txtSize_3[0]
          bottom?=?1700?+?txtSize_3[1]
          draw.rectangle((left,?top,?right,?bottom),?fill=(217,?217,?217,?255))


          004.

          繪制文本


          ImageDraw 對(duì)象還有text()方法,
          用于在圖像上繪制文本。

          text()方法有4 個(gè)參數(shù):

          xy參數(shù)是兩個(gè)整數(shù)的元組,指定文本區(qū)域的左上角

          text 參數(shù)是想寫入的文本字符串

          可選參數(shù)fill 是文本的顏色

          可選參數(shù)font 是一個(gè)ImageFont 對(duì)象,

          用于設(shè)置文本的字體和大小


          因?yàn)橥ǔ:茈y預(yù)先知道一塊文本
          在給定的字體下的大小,
          所以ImageDraw 模塊也提供了textsize()方法。

          textsize()方法返回一個(gè)兩整數(shù)元組,
          表示如果以指定的字體寫入圖像,
          文本的寬度和高度。

          #?計(jì)算各文本的放置位置
          txtSize_1?=?draw.textsize('距?離?新?年?還?有',?font2)
          pos_x_1?=?(1000?-?txtSize_1[0])?/?2
          txtSize_2?=?draw.textsize('天',?font2)
          pos_x_2?=?(1000?-?txtSize_2[0])?/?2

          wenhou?=?["除夕夜",?"貼春聯(lián)",?"把面發(fā)",?"置新衣",?"煮肉肉",?"買年貨",?"大掃除",?"祭灶臺(tái)"]
          txtSize_3?=?draw.textsize(wenhou[i-1],?font3)
          pos_x_3?=?(1000?-?txtSize_3[0])?/?2

          #?設(shè)置文本放置位置,居中
          draw.text((pos_x_1,?200),?'距?離?新?年?還?有',?fill=(217,?217,?217,?255),?font=font2)
          draw.text((pos_x_2,?1400),?'天',?fill=(217,?217,?217,?255),?font=font2)
          draw.text((pos_x_3,?1700),?wenhou[i-1],?fill=im_color[i-1],?font=font3)

          #?設(shè)置變化的文本屬性
          txtSize_4?=?draw.textsize(str(i),?font1)
          pos_x_4?=?(1000?-?txtSize_4[0])?/?2
          draw.text((pos_x_4,?600),?str(i),?fill=(255,?192,?0,?255),?font=font1)


          005.

          保存圖像到本地


          保存圖像到當(dāng)前目錄中
          命名為:dayx.png

          #?保存圖像
          filename?=?'day'?+?str(i)?+?'.png'
          im.save(filename)


          006.

          我是總結(jié)


          參考了大佬的部分代碼,
          利用pillow關(guān)于圖像處理的模塊,

          加入了一些新的設(shè)計(jì)元素,
          制作了新一版本的新年倒計(jì)時(shí)海報(bào)。

          獲取本文相關(guān)代碼,請(qǐng)?jiān)诠娞?hào)對(duì)話頁回復(fù) 新年快樂

          ?新的一年,你有哪些愿望?
          歡迎留言分享。

          作者:GitPython
          來源:GitPython


          _往期文章推薦_

          新年了,用Python定制一本個(gè)性化日歷




          瀏覽 63
          點(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>
                  大陆操屁屁视频在线观看 | 撸一撸在线视频 | 国产美女丝袜足交视频 | 黄片无码在线观看 | 一级免费试看 |