2011-04-27 2 views
5

J'ai une question sur les valeurs de pixels renvoyées à partir d'une image ouverte avec la fonction de chargement PIL. Je suis en utilisant le code suivant:Les valeurs de pixel Python et PIL sont différentes pour GIF et JPEG

frame = Image.open(fname).load() 
a = frame[10, 10] 

Si je charge une image GIF, a est la valeur entière 43. Mais si je convertir l'image JPEG et exécutez à nouveau le code, a est un tuple (253, 254, 100).

Pourquoi? Et comment puis-je convertir (253, 254, 100) en 43?

Merci.

Répondre

5

Les GIF sont pallettized, tandis que les JPEG sont RVB. L'acte de transformer l'image dispose de la palette, vous devrez donc regarder à travers les entrées de la palette dans le GIF pour trouver la correspondance la plus proche de la couleur désirée.

+0

Pour clarifier davantage: une image GIF a une table de (jusqu'à) 256 couleurs. Chaque pixel a un index dans cette table (dans votre exemple, 10) qui est utilisé pour déterminer sa couleur. Les fichiers JPEG stockent les valeurs RVB pour chaque pixel. Si vous regardez l'entrée 10 dans la table des couleurs du GIF, elle devrait être '' (253, 254, 100) '' (ou très proche). – Blair

Questions connexes