使用node local dns來提升ClusterDNS服務質量
今天就來教大家這個套路:
如何使用 Python 來做出來這樣有點浪漫,又有點極客的“內涵”圖。
當然,能不能靠它得到心儀物件的青睞,就要靠你(命)了。(๑•́₃ •̀๑)
那麼要怎麼做呢?
我們先找一張女神的高清圖片(儘量解析度高點的吧,效果會好點)。這裡以一張原圖是這樣的(解析度是:3840*2160)。
使用我寫好的指令碼執行後,就生成了這樣一張圖,請你點選,放大再放大。驚喜?
然後將這張圖片發給你的女神,具體話術你自己想咯
好吧,相比女神來說,你可能更在意這是如何實現的。
其實原理很簡單,程式碼也還不到 20 行。
首先,來講講原理。
事實上,每一張圖片都是由一個一個的畫素點所組成的。而每個畫素點,都有自己的顏色,其顏色可以用一個數組來表示:(a,b,c),其中每位數的取值範圍都是 0-255。
比如(0,0,0)代表黑色,(255,255,255)代表白色。
當畫素點足夠多的時候,這張照片就是我們所說的高清照片。
而如果當畫素點太少,我們的肉眼就能感知到明顯的鋸齒感。
用 Excel 畫了個圖,每一方格代表一個畫素,其中若我的字型的大小設定 5(非字號5,而是每個字佔用5個畫素),效果大概就是如下這樣子。
我只要每個畫素取出一個畫素值,並使用這個畫素做為該字的顏色即可,在畫素量夠多的情況下,從遠處看,是能看到我們原來影象的輪廓的。
有了思路,就可以開始我們的程式碼。
首先,我們需要用到 PIL庫,使用其中的 PIL.Image 讀取影象,並使用 load 方法獲取到每一個畫素值。
img_raw=Image.open(img_path)
img_array=img_raw.load()
然後新建一張畫布,並選好你要使用的字型和字型大小(這裡要確保路徑下的字型檔案是存在的)。
img_new=Image.new("RGB",img_raw.size,(0,0,0))
draw=ImageDraw.Draw(img_new)
font=ImageFont.truetype('C:\Windows\Fonts\STHUPO.TTF',font_size)
由於需要不斷迴圈 “我喜歡你!”,這五個字元。所以這裡可以while迴圈 yield 來實現一個生成器。
defcharacter_generator(text):
whileTrue:
foriinrange(len(text)):
yieldtext[i]
最後,要給這些字加上相應的顏色,寫入新建立的畫布中。
foryinrange(0,img_raw.size[1],font_size):
forxinrange(0,img_raw.size[0],font_size):
draw.text((x,y),next(ch_gen),font=font,fill=img_array[x,y],direction=None)
最後將成品儲存
img_new.convert('RGB').save("123.jpg")
完整程式碼如下,供你參考
fromPILimportImage,ImageDraw,ImageFont
font_size=7
text="我喜歡你!"
img_path="321.jpg"
img_raw=Image.open(img_path)
img_array=img_raw.load()
img_new=Image.new("RGB",img_raw.size,(0,0,0))
draw=ImageDraw.Draw(img_new)
font=ImageFont.truetype('C:C:\Windows\Fonts\STHUPO.TTF',font_size)
defcharacter_generator(text):
whileTrue:
foriinrange(len(text)):
yieldtext[i]
ch_gen=character_generator(text)
foryinrange(0,img_raw.size[1],font_size):
forxinrange(0,img_raw.size[0],font_size):
draw.text((x,y),next(ch_gen),font=font,fill=img_array[x,y],direction=None)
img_new.convert('RGB').save("123.jpg")
如果你想在自己的電腦上執行,只要複製上面這段程式碼,儲存為 python 檔案(例如 draw.py),在程式碼編輯器或者命令列中執行即可。
需要注意的幾點是:
1. 要安裝 PIL 庫。需要注意的是,這個模組名叫做 PIL,但現在已經不更新了,我們需要用另一個替代庫:pillow。可以在命令列通過pip install pillow安裝。
2. 將你的原始圖片跟程式碼放在同一個目錄,並修改檔案中的影象檔名。
3. 字型可以自行更改,但要確保是中文字型,並且字型檔案的路徑正確。