initial
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import numpy as np
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
def convert_rgb_to_rgb565_numpy(image):
|
||||
if image.mode != 'RGB':
|
||||
raise ValueError('Image must be in RGB mode')
|
||||
|
||||
# Convert image to NumPy array
|
||||
img_array = np.array(image)
|
||||
|
||||
# Extract the individual RGB components
|
||||
r = img_array[:,:,0].astype(np.uint16)
|
||||
g = img_array[:,:,1].astype(np.uint16)
|
||||
b = img_array[:,:,2].astype(np.uint16)
|
||||
|
||||
# Shift the bits into the correct positions for RGB565
|
||||
# rgb565_array = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)
|
||||
# Shift the bits into the correct positions for RGB565 using NumPy's bitwise functions
|
||||
rgb565_array = np.bitwise_or(np.bitwise_or(np.left_shift(np.bitwise_and(r, 0xF8), 8),
|
||||
np.left_shift(np.bitwise_and(g, 0xFC), 3)),
|
||||
np.right_shift(b, 3))
|
||||
|
||||
# Flatten the array to a 1D array of bytes and return
|
||||
return rgb565_array.flatten().tobytes()
|
||||
Reference in New Issue
Block a user