У меня есть строка, которая считывается с камеры апогея USB, которая представляет собой 12-битное изображение в градациях серого с 12-битным изображением, каждое из которых занимает младшие 12 бит из 16-битных слов.
Я хочу создать 8-битный png из этой строки, игнорируя младшие 4 бита.
Я могу преобразовать его в 16-битное изображение, где старшие 4 бита всегда равны нулю, используя PIL с
import Image
#imageStr is the image string
#imageSize is the image size
img=Image.fromstring("I", imageSize, imageStr, "raw", "I;16", 0,1)
img.save("MyImage.png", "PNG")
В любом случае, можно ли сделать что-то похожее для создания 8-битного изображения без полной распаковки строки, выполнения арифметики и создания новой строки?
Редактировать: Комментарий Wumps о преобразовании изображения дал мне идею, и я сделал это
img = img.point(lambda i: i * 16, "L") #shifts by 4 bits and converts to 8-bit image.
Спасибо Wump