text: # SPDX-FileCopyrightText: 2019 Melissa LeBlanc-Williams for Adafruit Industries
  # SPDX-License-Identifier: MIT
  
  """
  Image resizing and drawing using the Pillow Library. For the image, check out the
  associated Adafruit Learn guide at:
  https://learn.adafruit.com/adafruit-eink-display-breakouts/python-code
  
  """
  
  import digitalio
  import busio
  import board
  from PIL import Image
  from adafruit_epd.il0373 import Adafruit_IL0373
  from adafruit_epd.il91874 import Adafruit_IL91874  # pylint: disable=unused-import
  from adafruit_epd.il0398 import Adafruit_IL0398  # pylint: disable=unused-import
  from adafruit_epd.ssd1608 import Adafruit_SSD1608  # pylint: disable=unused-import
  from adafruit_epd.ssd1675 import Adafruit_SSD1675  # pylint: disable=unused-import
  from adafruit_epd.ssd1680 import Adafruit_SSD1680  # pylint: disable=unused-import
  from adafruit_epd.ssd1681 import Adafruit_SSD1681  # pylint: disable=unused-import
  from adafruit_epd.uc8151d import Adafruit_UC8151D  # pylint: disable=unused-import
  
  
  # create the spi device and pins we will need
  spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
  ecs = digitalio.DigitalInOut(board.CE0)
  dc = digitalio.DigitalInOut(board.D22)
  srcs = None
  rst = digitalio.DigitalInOut(board.D27)
  busy = digitalio.DigitalInOut(board.D17)
  
  # give them all to our driver
  # display = Adafruit_SSD1608(200, 200,        # 1.54" HD mono display
  # display = Adafruit_SSD1675(122, 250,        # 2.13" HD mono display
  # display = Adafruit_SSD1680(122, 250,        # 2.13" HD Tri-color or mono display
  # display = Adafruit_SSD1681(200, 200,        # 1.54" HD Tri-color display
  # display = Adafruit_IL91874(176, 264,        # 2.7" Tri-color display
  # display = Adafruit_IL0373(152, 152,         # 1.54" Tri-color display
  # display = Adafruit_UC8151D(128, 296,        # 2.9" mono flexible display
  # display = Adafruit_IL0373(128, 296,         # 2.9" Tri-color display
  # display = Adafruit_IL0398(400, 300,         # 4.2" Tri-color display
  display = Adafruit_IL0373(
      104,
      212,  # 2.13" Tri-color display
      spi,
      cs_pin=ecs,
      dc_pin=dc,
      sramcs_pin=srcs,
      rst_pin=rst,
      busy_pin=busy,
  )
  
  # IF YOU HAVE A 2.13" FLEXIBLE DISPLAY uncomment these lines!
  # display.set_black_buffer(1, False)
  # display.set_color_buffer(1, False)
  
  # IF YOU HAVE A 2.9" FLEXIBLE DISPLAY uncomment these lines!
  # display.set_black_buffer(1, True)
  # display.set_color_buffer(1, True)
  
  display.rotation = 1
  
  image = Image.open("blinka.png")
  
  # Scale the image to the smaller screen dimension
  image_ratio = image.width / image.height
  screen_ratio = display.width / display.height
  if screen_ratio < image_ratio:
      scaled_width = image.width * display.height // image.height
      scaled_height = display.height
  else:
      scaled_width = display.width
      scaled_height = image.height * display.width // image.width
  image = image.resize((scaled_width, scaled_height), Image.BICUBIC)
  
  # Crop and center the image
  x = scaled_width // 2 - display.width // 2
  y = scaled_height // 2 - display.height // 2
  image = image.crop((x, y, x + display.width, y + display.height)).convert("RGB")
  
  # Convert to Monochrome and Add dithering
  # image = image.convert("1").convert("L")
  
  # Display image.
  display.image(image)
  display.display()
  