pixoo-client icon indicating copy to clipboard operation
pixoo-client copied to clipboard

encode_raw_image crashes with simple 32 x 32 image of single color

Open gpk-code opened this issue 9 months ago • 0 comments

When generating a 32 x 32 image of a single color and using it with encode_raw_image like in the following code:

from PIL import Image
from pixoo import PixooMax
#-----------------------------------------------------------------------------------------------------------------------
img = Image.new( "RGB", ( 32, 32 ), ( 255, 0, 0 ) )
img.show()

p = PixooMax( "11:75:58:FA:E5:3C" )
p.encode_raw_image( img )

The method crashes with the following error:

Traceback (most recent call last):
  File "Test.py", line 8, in <module>
    p.encode_raw_image( img )
  File "pixoo.py", line 294, in encode_raw_image
    encoded_data = [int(c, 2) for c in encoded_pixels]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pixoo.py", line 294, in <listcomp>
    encoded_data = [int(c, 2) for c in encoded_pixels]
                    ^^^^^^^^^
ValueError: invalid literal for int() with base 2: ''

I have pinpointed the cause of the error to be due to the wrong operator used in line 290 of pixoo.py:

      # Encode pixel data
      while len(encoded_byte) >= 8:
        encoded_pixels.append(encoded_byte[-8:])
        encoded_byte = encoded_byte[:-8]

The following code should instead be:

      # Encode pixel data
      while len(encoded_byte) > 8:
        encoded_pixels.append(encoded_byte[-8:])
        encoded_byte = encoded_byte[:-8]

gpk-code avatar Jan 03 '25 13:01 gpk-code