首頁 > 評測 > PIL與OLED的組合--Adafruit 128x64 OLED for Raspberry上手

PIL與OLED的組合--Adafruit 128x64 OLED for Raspberry上手

PIL   OLED   Adafruit   128x64   OLED   Raspberry   樹莓派   
  • 作者:SATURN
  • 來源:21ic
  • [導(dǎo)讀]
  • Python Imaging Library (PIL)是python下的圖像處理模塊,支持多種格式,并提供強(qiáng)大的圖形與圖像處理功能。OLED顯示屏是利用有機(jī)電自發(fā)光二極管制成的顯示屏。由于同時(shí)具備自發(fā)光有機(jī)電激發(fā)光二極管,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。

disp.display()

傳統(tǒng)的繪圖方法,先寫一個(gè)繪點(diǎn)的函數(shù),然后不管是繪制字符,還是繪制幾何圖形及圖像,都是調(diào)用這個(gè)繪點(diǎn)函數(shù)來實(shí)現(xiàn),如果要實(shí)現(xiàn)更好的性能,也許會(huì)通過塊操作(包括硬件DMA等),不過在這里,我們看不到任何與繪點(diǎn)相關(guān)的操作,我們看到的只是一幅圖,沒錯(cuò),就是一幅圖!

前面的初始化代碼我們略過不提,其中語句

font = ImageFont.truetype('msyh.ttc', 12)

創(chuàng)建一個(gè)ImageFont對象,該對象指定了用來向Image中繪制字符所使用的字體,可以直接使用truetype字庫,同時(shí)指明字體大小。

image = Image.new('1', size)

draw = ImageDraw.Draw(image)

draw.text((0, 0), '古詩一首', font=font, fill=255)

draw.text((0, 20), '白日依山盡, 黃河入海流', font=font, fill=255)

draw.text((0, 38), '欲窮千里目, 更上一層樓', font=font, fill=255)

這一部分代碼先創(chuàng)建一幅圖片,然后使用ImageDraw向上繪制指定的文字,使用指定的字體及填充色。

最后的兩行代碼將圖像顯示到OLED上,很簡單,效果呢,也很簡單。

image9_copy.jpg

不過調(diào)用起來確實(shí)非常舒服!

如果直接加載圖像文件并顯示,則步驟更簡單,如下是顯示非常有名的lena圖像的代碼

from PIL import Image, ImageDraw, ImageFont

import Adafruit_SSD1306

RST = None

DISP_ADDR = 0x3c

disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

disp.begin()

disp.clear()

disp.display()

image = Image.open('lena.png').convert('1')

disp.image(image)

disp.display()

代碼就不分析了,調(diào)試效果如下,后面一張圖是原圖

image10.jpg

image11.jpg

差別有點(diǎn)大,主要原因是圖片二值化后細(xì)節(jié)丟失太多,再加上縮放后細(xì)節(jié)也會(huì)丟失!

總體說來,Adafruit 128x64 OLED for Raspberry不錯(cuò)!一方面,我們終于可以扔掉顯示器了(P:-)),其次,可以使用這個(gè)模塊來學(xué)習(xí)簡單的計(jì)算圖形學(xué)(繪圖,例如直線生成算法,曲線的生成算法等),細(xì)節(jié)都隱藏在PIL中;還有,再也不用擔(dān)心找不到設(shè)備的IP地址了,如下

image12_copy.jpg

當(dāng)然,要是價(jià)格再便宜一點(diǎn)就更好了!

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+