FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» bouton dans autre form que 0
QR Code Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
QR Code Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
QR Code Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
QR Code Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
QR Code Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
QR Code Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
QR Code Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
QR Code Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
QR Code Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
QR Code Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
QR Code Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
QR Code Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
QR Code Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
QR Code Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
QR Code Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal

 

 QR Code

Aller en bas 
3 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

QR Code Empty
MessageSujet: QR Code   QR Code EmptyMer 1 Sep 2021 - 20:33

Dans le calme ambiant (c'est les vacances !)
Je ne connais pas grand chose aux QR codes, d'autres ici sont plus qualifiés que moi,
et ce qui suit est plutôt intuitif.

Je constate par expérience que les QR codes représentent un codage sous forme de bits 0 et 1, chaque bit
étant représenté par un carré noir si = 1, ou blanc si = 0, que le nombre de bits verticaux est égal au nombre
de bits horizontaux, d'où une image résultante carrée, et que ce nombre de bits est très variable suivant le QR code.
Par exemple pour le QRcode du pass sanitaire, pour moi il fait 81x81 bits, pour mon épouse 85x85 bits...

Quant au décodage d'un QR code, c'est le mystère.
J'ai récupéré sur internet un logiciel de lecture: 'Code Two QR Code Desktop Reader', le résultat est une chaîne de
caractère incompréhensible, il doit y avoir plusieurs méthodes de codage.
PS: Le texte d'un QR code généré par la fonction DLL de Klaus: 'GenerateQRCode' est bien restitué par le logiciel
ci-dessus, j'en déduis que certains QR codes sont cryptés (par exemple celui du pass sanitaire).

Juste par curiosité, ci-dessous une petite sub qui traite un fichier QR code (bmp) récupéré par exemple par copier/coller
depuis le pdf d'attestation de vaccination. L'image enregistrée se présente entourée d'un encadrement blanc.
La sub supprime cet encadrement, et compte le nombre de bits d'infos du QR code (vertical = horizontal), et enregistre
l'image résultante (sans bordures) dans une image bmp. On peut en paramètre dimensionner cette image à volonté).

En paramètres:
fq$ = image d'origine (issue du copier/coller), jpg ou bmp
fr$ = image bmp résultat
w1,h1 = redimensionnement de l'image finale, si w1 > 0
On récupère au retour la valeur nb% (définie avant l'appel) = nombre de bits d'infos horizontalement et verticalement.

Code:
SUB QRCode_Dim(fq$,fr$,w1,h1)
  ' Suppression de l'entourage blanc autour d'un QR Code fq$
  ' Résultat dans fr$ (bmp)
  ' Dimensions résultat w x h, nb de bits d'info nb% (largeur et hauteur)
  ' (***** variables w, h, nb% définis dans l'appelant *****)
  ' Si paramètre w1 <> 0: redimensionnement de l'image en w1 x h1 pixels.
  DIM_LOCAL fm$,n2,p,wi,hi,x,y,x1,y1,y2,wb,cx,cy
  fm$ = "Z:\Provy.bmp": ' fichier provisoire de manoeuvre, à ajuster
  n2 = NUMBER_2D_TARGET
  p = 900: PICTURE p: HIDE p: 2D_TARGET_IS p
  IMAGE p+1
  FILE_LOAD p,fq$: FILE_SAVE p,fm$
  FILEBIN_OPEN_READ 1,fm$
      FILEBIN_POSITION 1,18: wi = FILEBIN_READ(1)+256*FILEBIN_READ(1)
      FILEBIN_POSITION 1,22: hi = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1: FILE_DELETE fm$
  x1 = -1
  FOR y = 0 TO hi-1
      FOR x = 0 TO wi-1
          IF COLOR_PIXEL_BLUE(p,x,y)<128 THEN x1 = x: EXIT_FOR
      NEXT x
      IF x1 > 0 THEN EXIT_FOR
  NEXT y
  x1 = x: y1 = y
  FOR y2 = hi-1 TO 0 STEP -1
      IF COLOR_PIXEL_BLUE(p,x1,y2)<128 THEN EXIT_FOR
  NEXT y2
  h = y2-y1+1: w = h
  2D_IMAGE_COPY p+1,x1,y1,x1+w,y1+h
  FILE_SAVE p+1,fr$
  FOR x = x1 TO w
      IF COLOR_PIXEL_BLUE(p,x,y1)>128 THEN EXIT_FOR
  NEXT x
  wb = (x-x1)/7: nb% = w/wb
  2D_TARGET_IS n2: DELETE p: DELETE p+1
  IF w1 > 0
      SCENE2D p: HIDE p: WIDTH p,w1: HEIGHT p,h1: COLOR p,0,0,0
      SPRITE p: SPRITE_FILE_LOAD p,fr$
      cx = w1/w: cy = h1/h: SPRITE_SCALE p,cx,cy
      SNAPSHOT p,fr$
      DELETE p
      w = w1: h = h1
  END_IF  
END_SUB

J'ai aussi une sub qui lit le fichier QR code et traduit les informations sous forme de 0 et 1 dans un fichier texte,
une ligne par rangée de bits, pour analyse éventuelle ultérieure (que je ne sais pas faire...).
On peut facilement reconstituer l'image QR code à partir de ce fichier texte.


Dernière édition par JL35 le Mer 1 Sep 2021 - 22:17, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptyMer 1 Sep 2021 - 21:07

Tant qu'à faire, la sub qui convertir l'image QR code (épurée comme ci-dessus, c'est à dire sans marges)
en fichier texte de données 0 et 1 représentant chaque bit d'information du QR code.
Quant à leur signification, c'est une autre paire de manches !

Code:
SUB QRCode_Tra(f$,nb,ft$)
  ' Traduction de l'image QR Code f$, de nb x nb bits d'info, sans marges,
  ' en un fichier texte ft$ de lignes de 0 et 1, nb lignes de nb valeurs 0/1
  DIM_LOCAL n2,fm$,p,wi,hi,cx,cy,w,h,x,y,i,j,a$,v$
  fm$ = "Z:\ImgQR.bmp": ' fichier provisoire de manoeuvre, à ajuster
  FILEBIN_OPEN_READ 1,f$: ' dimensions de l'image donnée
      FILEBIN_POSITION 1,18: wi = FILEBIN_READ(1)+256*FILEBIN_READ(1)
      FILEBIN_POSITION 1,22: hi = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1  
  w = nb*10: h = w: ' image résultat =10 pixels par bit d'info
  ' 1) dimensionnement éventuel de l'image à 10 pixels par bit de données  
  IF wi <> w
      p=900: SCENE2D p: HIDE p: WIDTH p,w: HEIGHT p,h: COLOR p,0,0,0
      SPRITE p: SPRITE_FILE_LOAD p,f$
      cx = w/wi: cy = h/hi: SPRITE_SCALE p,cx,cy
      SNAPSHOT p,fm$
      DELETE p: f$ = fm$  
  END_IF
  ' 2) analyse de l'image résultante (1 bit = 10x10 pixels, =1 si noir, sinon 0)  
  p=900: PICTURE p: HIDE p: WIDTH p,w: HEIGHT p,h: FILE_LOAD p,f$
  n2 = NUMBER_2D_TARGET: 2D_TARGET_IS p  
  FILE_OPEN_WRITE 1,ft$
  FOR j = 0 TO nb-1
      y = j*10+5: a$ = ""
      FOR i = 0 TO nb-1
          x = i*10+5: v$ = "0"
          IF COLOR_PIXEL_RED(p,x,y)<128 THEN v$ = "1"
          a$ = a$+v$
      NEXT i
      FILE_WRITELN 1,a$
  NEXT j
  FILE_CLOSE 1
  2D_TARGET_IS n2: DELETE p
  IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$
END_SUB

Concernant le QR Code, des infos assez complètes ici: https://fr.wikipedia.org/wiki/Code_QR
C'est pas simple, et je vais en rester là !
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptyJeu 2 Sep 2021 - 11:08

Bonjour JL35

Ca fait plaisir de voir qu'il y a encore quelques personnes présentes sur le forum ! Wink

Concernant le principe du QR-code il y a un fil de discussion avec des liens assez complets sur le sujet :

https://panoramic.1fr1.net/t6586-panoramic-et-qr-code?highlight=QR+CODE#79125
Je te conseille d'y jeter un œil.  geek
A bientôt.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptyJeu 2 Sep 2021 - 14:09

Bonjour Minibug,

je connaissais ce fil de discussion (j'y suis même intervenu), je voulais simplement pouvoir décoder un QR Code,
c'est simple sous forme de bits 0 et 1, mais pour la signification du contenu c'est autre chose !
Je pense qu'en général ce contenu doit être codé et qu'il faut une clé pour le décoder, ça paraît normal.
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptyJeu 2 Sep 2021 - 14:35

JL35 a écrit:
je connaissais ce fil de discussion (j'y suis même intervenu)

Ah oui pardon, je n'avais pas regardé toutes les interventions. Wink

Je pense surtout que le décodage ne se pratique pas d'une seule traite avec une lecture de haut en bas et de gauche a droite. Mais plutôt par zones. Comme il était indiqué dans un des liens...

Ces zones étant certainement traitées de façon indépendantes.

C'est ce qui explique qu'un simple décodage 'linéaire' ne donne pas le résultat escompté.
C'est effectivement plus complexe qu'un simple code barre ! Laughing

Yannick aime ce message

Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptyJeu 2 Sep 2021 - 16:22

Tu as raison, ça doit pouvoir se décoder assez facilement pour une génération en clair (comme la dll de klaus),
mais dans pas mal de cas les données doivent être cryptées, ce qui semble normal pour la sécurité,
et dans ce cas il faut avoir les outils adéquats.
Bon, j'en reste là, je voulais simplement décomposer en une liste les bits élémentaires de l'image,
et pouvoir recomposer l'image à partir de cette liste, ça c'est assez facile.
Quant à la signification du contenu, c'est autre chose !
Bonne journée à toi Minibug ! et profitons du beau soleil actuel !

Yannick aime ce message

Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2389
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptySam 4 Sep 2021 - 16:58

Bonjour à tous !

Sans entrer de trop dans les détails, un QR-code est décliné sous :

- Différents modes d’encodage ;
- Quarante versions ;
- Quatre niveaux de correction ;
- Huit masques.


1) Différents modes d’encodage.
Il sera choisi afin de réduire au maximum la taille de l’information à encoder et par voie de conséquence, la taille finale du QR-code.

- Le mode numérique : uniquement pour les chiffres décimaux de 0 à 10.
- Le mode alphanumérique : chiffres décimaux de 0 à 10, les lettres majuscules de A à Z et quelques symboles : « +  - /  *  :  .  $  % » + l'espace.
- Le mode octet : tous caractères de la table ASCII de 0 à 255.
- Le mode Kanji : les caractères sont codés sur 2 octets.

Dans un QR-code, différents modes d’encodage peuvent cohabiter. Chaque trame possède un entête indiquant le mode de codage utilisé ainsi que le nombre de caractères du message.


2) Quarante versions.
Elles déterminent la taille physique du QR-code.
Elles sont échelonnées, en x et en y, par un pas de 4 cellules.
La version à utiliser dépend de la taille de l’information qui composera le QR-code.

- La version 1 correspond à un QR-code de 17 x 17 cellules
- La version 2 , 25 x 25 cellules
- …
- La version 40 : 177 x 177 cellules.


3) Quatre niveaux de correction.
Lors de la création d’un QR-code, on choisit le niveau de correction que l’on souhaite. Il permet de corriger les erreurs dues à la lecture d’un QR-code altéré (rayé, abimé).
- Niveau L (Low) : permet de récupérer jusqu’à 7% de données ;
- Niveau M (Medium) : 15 % de données ;
- Niveau Q (Quality) : 25 % de données ;
- Niveau H (High) : 30 % de données.


4) Huit masques.
Lors de la finalisation du QR-code, avant de le dessiner, on va appliquer obligatoirement un des huit masques disponibles qui inversera la couleur de certaines cellules, afin de réduire au maximum les risques d’erreurs de lecture (artéfacts).


_____________________________________________________________________________________________________________________


Voilà pour un rapide survol du QR-code.
Je ne suis pas entré dans la partie complexe de l’encodage des données avec la génération des octets de correction d’erreur (Reed-Solomon), ni dans l'entrelacement des données dans certaines versions.

Pour lire un QR-code, il va falloir lire et décoder les zones réservées de l’image qui permettent de connaître le numéro du masque utilisé et le niveau de correction d’erreur. Dans un QR-code de version 7 ou supérieure, une autre zone est à lire pour connaître le version exacte entre 7 et 40.

Une fois le numéro de masque employé connu, il faut démasquer les données (redonner aux cellules leur bonne couleur) puis les lire et les décoder pour obtenir le texte en clair.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptySam 4 Sep 2021 - 17:41

Bonjour Marc,

Et un grand merci à toi pour ces précisions, ça au moins c'est de l'info précise.
Et ça me confirme bien qu'on ne peut pas décoder un QR code si on n'a pas les outils, et surtout
les renseignements nécessaires correspondant au type de codage.
Comme ici il avait été proposé des outils pour fabriquer un QR code, je m'étais dit que ayant plus souvent
l'occasion en tant qu'utilisateur lambda de lire un QR code que d'en fabriquer un ça serait intéressant
de le décoder, mais je vois bien que c'est quasiment impossible, avec toutes ces possibilités de codage.

En tout cas merci à toi, ça m'a éclairé sur bien des aspects.

Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

QR Code Empty
MessageSujet: Re: QR Code   QR Code EmptySam 4 Sep 2021 - 17:51

Bonjour Marc !

Merci pour ces précisions.

Effectivement c'est complexe... et bien plus que ce que je pensais ! drunken
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Contenu sponsorisé





QR Code Empty
MessageSujet: Re: QR Code   QR Code Empty

Revenir en haut Aller en bas
 
QR Code
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Balises code /code du forum
» Dessiner un arc de cercle
» J’ai dépoussiéré un code de jeu
» compresseur de code
» Editeur de code.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: