Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 83d24f9

Browse files
authoredSep 10, 2020
Merge pull request #33 from jsharper/fix/jsharper/image-rotate
Fix image function when display rotated 90 or 270 degrees
2 parents 9f7291e + 9e38772 commit 83d24f9

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed
 

‎adafruit_framebuf.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,13 +372,18 @@ def text(self, string, x, y, color, *, font_name="font5x8.bin", size=1):
372372
def image(self, img):
373373
"""Set buffer to value of Python Imaging Library image. The image should
374374
be in 1 bit mode and a size equal to the display size."""
375+
# determine our effective width/height, taking rotation into account
376+
width = self.width
377+
height = self.height
378+
if self.rotation == 1 or self.rotation == 3:
379+
width, height = height, width
375380
if img.mode != "1":
376381
raise ValueError("Image must be in mode 1.")
377382
imwidth, imheight = img.size
378-
if imwidth != self.width or imheight != self.height:
383+
if imwidth != width or imheight != height:
379384
raise ValueError(
380385
"Image must be same dimensions as display ({0}x{1}).".format(
381-
self.width, self.height
386+
width, height
382387
)
383388
)
384389
# Grab all the pixels from the image, faster than getpixel.
@@ -387,8 +392,8 @@ def image(self, img):
387392
for i in range(len(self.buf)):
388393
self.buf[i] = 0
389394
# Iterate through the pixels
390-
for x in range(self.width): # yes this double loop is slow,
391-
for y in range(self.height): # but these displays are small!
395+
for x in range(width): # yes this double loop is slow,
396+
for y in range(height): # but these displays are small!
392397
if pixels[(x, y)]:
393398
self.pixel(x, y, 1) # only write if pixel is true
394399

0 commit comments

Comments
 (0)
Please sign in to comment.