IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Changer dynamiquement la couleur fond et/ou encre d'un QRC


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut Changer dynamiquement la couleur fond et/ou encre d'un QRC
    Salut

    J'utilise le générateur de QRC qrcode.min.js
    Pour des raisons personnel dût à instabilité de ma connexion internet, je me suis fait un petit HTML pour générer le QRC sans avoir besoin de connexion.
    Le code
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <!DOCTYPE html>
    <html lang="fr">
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8">
    		<meta name="viewport" content="width=device-width, initial-scale=1.0">
    		<title>Créer et personnaliser un QR Code</title>
    		<!-- <script src="qrcode.js"></script> --> <!-- en local -->
    		<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
    	</head>
    	<style>
                    #InputQRC{
                            position:relative;
                            width:304px
                    }
                    /* new QRCode engendre une image qui contient le QRC */
                    img{
                            /* background-color: white; */
                            padding: 3px;
                            border-radius: 5px;
                            border: 2px solid black;
                    }
            </style>
    	<body>
    		<input type="color" id="FondColor" name="FondColor" value="#ffffff" onchange="ActuColor()">
    		<label for="FondColor">Couleur de fond:</label>
    		<br>
    		<input type="color" id="EncreColor" name="EncreColor" value="#000000" onchange="ActuColor()">
    		<label for="EncreColor">Couleur de l'encre:</label>
    		<br>
    		<input type="text" id="InputQRC" placeholder="Entrez votre Url ou votre texte (mini 3 caractères)" onkeyup="ActuText(this.value)" onfocus="PrendFocus(this)" onblur="PerdFocus(this)">
    		<br>
    		<br>
    		<div id="CtnQRC"></div>
    		<script>
                            const href = "https://contrib-vb.developpez.com/ProgElecT/RadioAmateurs/Radio%20version5/Radio74.php";
                            const size = 300;
                            let ClF = "#ffffff";
                            let ClE = "#000000";
                            let CodeQR;
     
                            CodeQR = new QRCode(document.querySelector("#CtnQRC"), {
                                    text: href,
                                    width: size,
                                    height: size,
                                    colorDark: ClF,
                                    colorLight: ClE,
                                    correctLevel : QRCode.CorrectLevel.H
                            });
     
                            function ActuText(texte) {
                                    if (texte < 3) {return;};
                                    ClF = document.getElementById("FondColor").value;
                                    ClE = document.getElementById("EncreColor").value;
                                    if (CodeQR == null) {
                                            CodeQR = generateQrCode(texte);
                                            console.log("generateQrCode");
                                            } else {
                                            CodeQR.makeCode(texte);
                                            console.log("makeCode");
                                    }
                            } 
                            function generateQrCode(qrContent) {
                                    return CodeQR = new QRCode("qr-code",
                                            {
                                                    width: 256,
                                                    height: 256,
                                                    colorDark: ClF,
                                                    colorLight: ClE,
                                                    correctLevel: QRCode.CorrectLevel.H,
                                                    text: qrContent,
                                            }
                                    );
                            }
                            function ActuColor() {
                                    texte = document.getElementById("InputQRC").value;
                                    //if (texte < 3) {return;};
                                    ClF = document.getElementById("FondColor").value;
                                    ClE = document.getElementById("EncreColor").value;
                                    CodeQR.colorDark=ClF;
                                    CodeQR.colorLight=ClE;
                                    //CodeQR.makeCode(texte);
                                    console.log("ActuColor          ClF = "+ClF+"    ClE = "+ClE);
                            } 
                            //====================================================================
                            function PrendFocus(el) {el.style.backgroundColor = "#ccffcc";return;}
                            //---------------------------------------------------------
                            function PerdFocus(el) {el.style.backgroundColor = "White";return;}
                            //---------------------------------------------------------
                    </script>
     
    	</body>
    </html>
    Malheureusement je ne parviens pas à modifier soit la couleur de fond soit la couleur de l'encre du QRC dynamiquement.
    Je peux choisir ses couleurs lors du chargement mais pas dynamiquement dans la fonction ActuColor ligne 74.

    Merci de votre aide.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    le qrcode est dessiné dans un canevas donc je pense qu'à chaque changement de couleur il faut rappeler le code complet de création du qrcode pour qu'il écrase le précédent.

  3. #3
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut ProgElecT,

    Ce QRcode est image encodé en base64. Comme le soulignait mathieu, il faut le redessiner pour changer les couleurs.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
      <meta http-equiv="content-type" content="text/html;charset=utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Créer et personnaliser un QR Code</title>
      <!-- <script src="qrcode.js"></script> --> <!-- en local -->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
    </head>
    <style>
      #InputQRC {
        position: relative;
        width: 304px
      }
     
      /* new QRCode engendre une image qui contient le QRC */
      img {
        /* background-color: white; */
        padding: 3px;
        border-radius: 5px;
        border: 2px solid black;
      }
    </style>
     
    <body>
      <input type="color" id="FondColor" name="FondColor" value="#ffffff" onchange="ActuColor()">
      <label for="FondColor">Couleur de fond:</label>
      <br>
      <input type="color" id="EncreColor" name="EncreColor" value="#000000" onchange="ActuColor()">
      <label for="EncreColor">Couleur de l'encre:</label>
      <br>
      <input type="text" id="InputQRC" placeholder="Entrez votre Url ou votre texte (mini 3 caractères)"
        onchange="ActuColor()">
      <br>
      <br>
      <div id="CtnQRC"></div>
      <script>
     
        var inputAdresse = document.getElementById('InputQRC')
        let ClF = "#ffffff";
        let ClE = "#000000";
        let CodeQR;
     
        inputAdresse.value = "https://contrib-vb.developpez.com/ProgElecT/RadioAmateurs/Radio%20version5/Radio74.php";
     
        CodeQR = new QRCode(document.querySelector("#CtnQRC"), {
          text: inputAdresse.value,
          correctLevel: QRCode.CorrectLevel.H
        });
     
        ActuColor()
     
        function ActuText(texte) {
          if (texte < 3) { return; };
     
          if (CodeQR == null) {
            CodeQR = generateQrCode(texte);
            console.log("generateQrCode");
          } else {
            CodeQR.makeCode(texte);
            console.log("makeCode");
          }
        }
     
        function generateQrCode(qrContent) {
          return CodeQR = new QRCode("qr-code",
            {
              text: qrContent,
              correctLevel: QRCode.CorrectLevel.H
            }
          );
        }
        function ActuColor() {
          texte = document.getElementById("InputQRC").value;
          CodeQR._htOption.colorDark = document.getElementById("FondColor").value;
          CodeQR._htOption.colorLight = document.getElementById("EncreColor").value;
          ActuText(inputAdresse.value)
     
        }
      </script>
     
    </body>
     
    </html>

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Merci à vous deux, mathieu et ASCIIDEFOND ainsi qu'à la centaine de personnes qui ont dût lire ma demande d'aide.

    ASCIIDEFOND, ta proposition fonctionne correctement comme j'en avais besoin.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer dynamiquement la couleur d'un input
    Par belocom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/09/2007, 17h26
  2. Réponses: 1
    Dernier message: 12/09/2007, 18h11
  3. Réponses: 1
    Dernier message: 29/08/2006, 12h01
  4. Changer dynamiquement la couleur d'un item d'une listview
    Par little_cypress dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2004, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo