Balance des blancs
La classe Camera.Parameters permet de connaître/définir la balance des blancs.
En effet, le rendu de la couleur blanche peut fortement varier suivant le type d'éclairage que les objets subissent (entre une tendance au bleu - couleur froide et rouge - couleur chaude). Cette option permet donc de prendre en considération cet éclairage et de compenser les aberrations obtenues.
Mode balance des blancs
Rien de plus simple ! Il s'agit d'indiquer à l'appareil comment corriger les couleurs pour que celles-ci soient plus proche de la réalité.
public void setWhiteBalance (String value) pour changer le mode
Déverrouille
un setAutoWhiteBalanceLock qui aurait été positionné à
vrai.
Ne pas oublier
d'affecter les nouveaux paramètres à votre
instance de Camera pour prendre en compte le
nouveau mode ! Cf. exemple plus bas.
La balance
des blancs n'est pas forcement supportée par l'appareil ! Contrôlez
avec la méthode getSupportedWhiteBalance.
public String getWhiteBalance () pour connaître le mode
null si
la balance des blancs est non supportée.
Modes supportés
Les valeurs permises dans la classe Camera.Parameters peuvent être les suivantes:
Désignation | Code |
Mode automatique | WHITE_BALANCE_AUTO |
Ampoule à incandescence | WHITE_BALANCE_INCANDESCENT |
Néon à tendance bleu | WHITE_BALANCE_FLUORESCENT |
Néon à tendance jaune | WHITE_BALANCE_WARM_FLUORESCENT |
Ensoleillé | WHITE_BALANCE_DAYLIGHT |
Couvert | WHITE_BALANCE_CLOUDY_DAYLIGHT |
Crépuscule | WHITE_BALANCE_TWILIGHT |
Ombragé | WHITE_BALANCE_SHADE |
Mais la liste des valeurs effectivement supportées sur un appareil sera récupérable de la façon suivante:
public List<String> getSupportedWhiteBalance () qui retourne une liste des modes. Pourra être null si la balance des blancs n'est pas supportée !
Automatiser la balance des couleurs
Il peut exister sur l'appareil une détection automatique de la balance des blancs. Il suffit de positionner WHITE_BALANCE_AUTO dans le mode pour qu'un algorithme se débrouille tout seul pour trouver une correction la plus intéressante.
Comme c'est
automatique, il est fort probable que cela ne marche pas à tous les coups
! Il faudra donc prévoir une possibilité de repasser en manuel
dans votre programme pour permettre de choisir l'un des modes
prédéfinis.
Verrouillage de la balance automatique
Les méthodes qui suivent sont disponibles depuis API level 14 -Android 4. Elles permettent de verrouiller l'algorithme de correction automatique des blancs (WHITE_BALANCE_AUTO) pour pouvoir effectuer une série de photos avec toujours les mêmes réglages (exemple pour le bracketing en photographie).
Est-il possible de locker la balance automatique ?
public boolean isAutoWhiteBalanceLockSupported () est une méthode qui indique que l'appareil supporte le vérrouillage de la balance automatique lorsque le résultat retourné est vrai.
Bloquer/débloquer le verrouillage de la balance automatique
public void setAutoWhiteBalanceLock (boolean toggle)
En entrée:
toggle à vrai stop la balance automatique, à faux, relance le programme de balance des blancs automatique.
Changer manuellement
le mode de la balance des blancs aura pour effet de supprimer
setAutoWhiteBalanceLock () positionné à vrai auparavant.
Un release() de la caméra fera aussi perdre votre verrouillage.
Ne pas verrouiller
la balance automatique après un open()
et avant le startPreview().
Ne pas oublier
d'affecter les nouveaux paramètres à votre
instance de Camera pour prendre en compte le
nouveau mode ! Cf. exemple plus bas.
Connaître l'état bloqué ou non de la balance automatique
public boolean getAutoWhiteBalanceLock ()
Exemple de code
Où camera est une instance de Camera.