J'ai une chaîne qui est lue à partir d'une caméra d'apogée USB qui est une image en niveaux de gris 12 bits avec les 12 bits occupant chacun les 12 bits les plus bas de 16- mots de bits. Je veux créer un png de 8 bits à partir de cette chaîne en ignorant les 4 bits les plus bas.python convert 12 bits image codée dans une chaîne à 8 bits png
Je peux le convertir en une image 16 bits où les plus 4 bits sont toujours à zéro en utilisant PIL avec
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")
que je peux faire de toute façon quelque chose de similaire pour créer une image de 8 bits sans déballer complètement la chaîne faire de l'arithmétique et faire une nouvelle chaîne?
Edit: Wumps commentaire sur la conversion d'une image m'a donné une idée, et je l'ai fait par
img = img.point(lambda i: i * 16, "L") #shifts by 4 bits and converts to 8-bit image.
Merci Wump
comment voulez-vous le faire pour convertir un 8 bits PNG à un 4 bits un et conserver la palette ? –