Skip to content

Commit 81caa63

Browse files
authored
Merge pull request #32 from makermelissa/master
Added Pillow Image drawing example
2 parents 8d6209b + 0846fe0 commit 81caa63

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

examples/epd_pillow_image.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""
2+
Image resizing and drawing using the Pillow Library. For the image, check out the
3+
associated Adafruit Learn guide at:
4+
https://learn.adafruit.com/adafruit-eink-display-breakouts/python-code
5+
6+
Written by Melissa LeBlanc-Williams for Adafruit Industries
7+
"""
8+
9+
import digitalio
10+
import busio
11+
import board
12+
from PIL import Image
13+
from adafruit_epd.il0373 import Adafruit_IL0373
14+
from adafruit_epd.il91874 import Adafruit_IL91874 # pylint: disable=unused-import
15+
from adafruit_epd.il0398 import Adafruit_IL0398 # pylint: disable=unused-import
16+
from adafruit_epd.ssd1608 import Adafruit_SSD1608 # pylint: disable=unused-import
17+
from adafruit_epd.ssd1675 import Adafruit_SSD1675 # pylint: disable=unused-import
18+
19+
20+
# create the spi device and pins we will need
21+
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
22+
ecs = digitalio.DigitalInOut(board.CE0)
23+
dc = digitalio.DigitalInOut(board.D22)
24+
srcs = None
25+
rst = digitalio.DigitalInOut(board.D27)
26+
busy = digitalio.DigitalInOut(board.D17)
27+
28+
# give them all to our driver
29+
#display = Adafruit_SSD1608(200, 200, spi, # 1.54" HD mono display
30+
#display = Adafruit_SSD1675(122, 250, spi, # 2.13" HD mono display
31+
#display = Adafruit_IL91874(176, 264, spi, # 2.7" Tri-color display
32+
#display = Adafruit_IL0373(152, 152, spi, # 1.54" Tri-color display
33+
#display = Adafruit_IL0373(128, 296, spi, # 2.9" Tri-color display
34+
#display = Adafruit_IL0398(400, 300, spi, # 4.2" Tri-color display
35+
display = Adafruit_IL0373(104, 212, spi, # 2.13" Tri-color display
36+
cs_pin=ecs, dc_pin=dc, sramcs_pin=srcs,
37+
rst_pin=rst, busy_pin=busy)
38+
39+
# IF YOU HAVE A FLEXIBLE DISPLAY (2.13" or 2.9") uncomment these lines!
40+
#display.set_black_buffer(1, False)
41+
#display.set_color_buffer(1, False)
42+
43+
display.rotation = 1
44+
45+
image = Image.open("blinka.png")
46+
47+
# Scale the image to the smaller screen dimension
48+
image_ratio = image.width / image.height
49+
screen_ratio = display.width / display.height
50+
if screen_ratio < image_ratio:
51+
scaled_width = image.width * display.height // image.height
52+
scaled_height = display.height
53+
else:
54+
scaled_width = display.width
55+
scaled_height = image.height * display.width // image.width
56+
image = image.resize((scaled_width, scaled_height), Image.BICUBIC)
57+
58+
# Crop and center the image
59+
x = scaled_width // 2 - display.width // 2
60+
y = scaled_height // 2 - display.height // 2
61+
image = image.crop((x, y, x + display.width, y + display.height))
62+
63+
# Display image.
64+
display.image(image)
65+
display.display()

0 commit comments

Comments
 (0)