banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 04 November 2014 09:15

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

QGIS 2.4 : convertir une chaine hexa en entier

ALoha,


J'ai une chaîne hexa sur 6 caractère contenant une valeur de couleur. Comment faire pour la convertir dans mon éditeur de source de propriété en code rgb. L'opérateur color_rgb attend des valeurs entières.

D'avance, merci


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#2 Tue 04 November 2014 10:51

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: QGIS 2.4 : convertir une chaine hexa en entier

Bonjourt Pierre,

les fonction proposées dans l'onglet Couleur du générateur d'expression ne proposent pas en effet de créer une couleur à partir d'un code hexadécimal...  Cela peut déjà faire l'objet d'une demande de fonctionnalité.

Par contre, il semble possible de faire la chose en python : http://pythonjunkie.wordpress.com/2012/ … in-python/

A intégrer aux fonctions personnelles ou à ajouter au plugin "expression plus" en attendant une version future :
https://plugins.qgis.org/plugins/qgsexpressionsplus/

Pour récupérer ensuite les composantes R, V et B utilisables par la source de définition des propriété...


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Tue 04 November 2014 13:43

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: QGIS 2.4 : convertir une chaine hexa en entier

Voici une fonction que j'ai ajouté au fichier functions.py du plugin "expression plus". Je vais faire suivre à l'auteur :

Code:

@qgsfunction(1, "Expressions +", register=False)
def hexa_to_rgb(values, feature, parent):
    """
        Returns an hexa_to_rgb.
        
        <h4>Syntax</h4>
        <p>hexa_to_rgb(<i>color hexadecimal code</i>)</p>

        <h4>Arguments</h4>
        <p><i>color</i> &rarr; a color in hexa code.<br></p>
        
        <h4>Example</h4>
        <p><!-- Show example of function.-->
             hexa_to_rgb('#ffffff') &rarr; '255.255.255.255'</p>
    """  
    value = values[0].lstrip('#')
    lv = len(value)
    rgb = str(tuple(int(value[i:i+lv/3], 16) for i in range(0, lv, lv/3))).strip('()')+',255'
    return rgb

Il faut ensuite ajouter la fonction à la liste :

Code:

functions = [ramp_color_rgb,  dow, halton_sequence, quasi_rand, get_color_part, set_color_part, hexa_to_rgb]

J'ai mis une opacité par défaut à 255.

Ainsi hexa_to_rgb('#ffffff') retourne la chaine '255.255.255.255'


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#4 Thu 06 November 2014 15:36

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: QGIS 2.4 : convertir une chaine hexa en entier

Merci à toi. Je vais tester cela me paraît parfait.
La fonction retourne la chaîne avec des points ou bien des virgules ?
Sachant que je souhaite utiliser la fonction pour définir une couleur dans le gestionnaire de symbologie et que la chaîne attendue est plutôt du type "R,V,B,Alpha".

Dernière modification par Pierre (Thu 06 November 2014 15:38)


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#5 Thu 06 November 2014 18:19

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: QGIS 2.4 : convertir une chaine hexa en entier

Bonsoir Pierre,

Des virgules, comme attendu par QGis, par contre l'opacité est codée en dur dans la fonction à 255.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

Pied de page des forums

Powered by FluxBB