Used Pillow v3.1.1 (fork PIL)
from PIL import Image img = Image.open( "test_image.bmp", 'r' ) # ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° img.load() # ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° print( img.format, img.size, img.mode ) # Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠ°ΠΉΠ»Ρ if img.mode != 'RGB': # bmp ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΡΠ° # Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ # ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ RGB, ΡΠΎ Π² Π΄Π°Π½Π½ΡΡ
Π±ΡΠ΄ΡΡ # Π»ΠΈΠ±ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ°Π»ΠΈΡΡΡ (mode=p) # Π»ΠΈΠ±ΠΎ ΠΎΡΡΠ΅Π½ΠΎΠΊ ΡΠ΅ΡΠΎΠ³ΠΎ (ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ mode=L) # Π»ΠΈΠ±ΠΎ Π΅ΡΡ ΡΡΠΎ ΡΠΎ (mode=1 Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ) img = img.convert( 'RGB' ) # ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΡΡΠΈ ΡΠΎΡΠΌΠ°ΡΡ Π² 'RGB' pixels = img.getdata() # ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ `ImagingCore`) pix3 = list( pixels )[0:3] # ΠΏΠ΅ΡΠ²ΡΠ΅ 3 ΠΏΠΈΠΊΡΠ΅Π»Ρ print([ hex( (r << 16) + (g << 8) + b ) for r,g,b in pix3 ]) #hex ΠΏΠ΅ΡΠ²ΡΡ
ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
UPDATE:
def print_hex( path ): img = Image.open( path, 'r' ) img.load() # ΠΏΠ°Π»ΠΈΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊ (Π½Π΅ Π²ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°Π»ΠΈΡΡΡ) palette = img.getpalette() # Π²Π΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π² Π²ΠΈΠ΄Π΅ [r,g,b,r,g,b...] ΠΈΠ»ΠΈ None hex_palette = [] if palette: hex_palette = [ hex( color_component ) for color_component in palette ] if img.mode == 'P': # ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ°Π»ΠΈΡΡΡ # Ρ
ΡΠ°Π½ΡΡ ΡΠ²Π΅ΡΠ° Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠ°Π»ΠΈΡΡΡ # Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ hex ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊ. pixels = list( img.getdata() ) hex_palette_pixels = [ hex( pix ) for pix in pixels ] if img.mode != 'RGB': # Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² rgb ΡΠΎΡΠΌΠ°ΡΠ΅ (ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅) # ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΠΎΠ²ΠΎΠΉ Π² RGB img = img.convert( 'RGB' ) pixels = list( img.getdata() ) hex_rgb_pixels = [ [ hex( r ), hex( g ), hex( b ) ] for r,g,b in pixels ] hex_rgb_pixels_merged = [ color_component for color in hex_rgb_pixels for color_component in color ] print( hex_palette_pixels[0:100], hex_rgb_pixels[0: 100], hex_palette[0:100] )