kopia lustrzana https://github.com/pimoroni/pimoroni-pico
				
				
				
			
		
			
				
	
	
		
			37 wiersze
		
	
	
		
			975 B
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			37 wiersze
		
	
	
		
			975 B
		
	
	
	
		
			Python
		
	
	
#!/bin/env python3
 | 
						|
from PIL import Image
 | 
						|
import numpy
 | 
						|
import sys
 | 
						|
import pathlib
 | 
						|
 | 
						|
# Run with `./filename.py source-image.jpg`
 | 
						|
IMAGE_PATH = pathlib.Path(sys.argv[1])
 | 
						|
OUTPUT_PATH = IMAGE_PATH.with_suffix(".rgb332")
 | 
						|
 | 
						|
 | 
						|
def image_to_data(image):
 | 
						|
    """Generator function to convert a PIL image to 16-bit 565 RGB bytes."""
 | 
						|
    # NumPy is much faster at doing this. NumPy code provided by:
 | 
						|
    # Keith (https://www.blogger.com/profile/02555547344016007163)
 | 
						|
    pb = numpy.array(image.convert('RGBA')).astype('uint16')
 | 
						|
 | 
						|
    r = (pb[:, :, 0] & 0b11100000) >> 0
 | 
						|
    g = (pb[:, :, 1] & 0b11100000) >> 3
 | 
						|
    b = (pb[:, :, 2] & 0b11000000) >> 6
 | 
						|
    a = pb[:, :, 3] # Discard
 | 
						|
 | 
						|
    # AAAA RRRR GGGG BBBB
 | 
						|
    color = r | g | b
 | 
						|
    return color.astype("uint8").flatten().tobytes()
 | 
						|
 | 
						|
 | 
						|
img = Image.open(IMAGE_PATH)
 | 
						|
w, h = img.size
 | 
						|
data = image_to_data(img)
 | 
						|
 | 
						|
print(f"Converted: {w}x{h} {len(data)} bytes")
 | 
						|
 | 
						|
with open(OUTPUT_PATH, "wb") as f:
 | 
						|
    f.write(data)
 | 
						|
 | 
						|
print(f"Written to: {OUTPUT_PATH}") |