Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sauvegarde d'une image NB dans une base Access

11 réponses
Avatar
Driss HANIB
Bonjour à tous

une vaste question à laquelle, je pense, il y a plusieurs réponses.

Le contexte : sur un tablet PC (c'est à dire un portable avec écran
tactile).
programme : logiciel d'audit (programmé bien sur en VB et "non terminé",
mais opérationnel.

Demande : je cherche à faire signer l'interlocuteur sur l'écran, dans une
"case" (picture box en l'occurence) et à sauvegarder la signature, de
manière lié au document (audit) de façon à pouvoir si besoin imprimer le
document avec la siganture.

Pour la partie signature, j'ai la partie traçage sur le picturebox , donc le
problème n'est pas là. POur info bien sur la signature est monochrome
(quelquez soit la couleur choisie), par défaut noire.

je vois deux pistes

1 . sauvegarde complète de l'image dans un champ mémo ou Blob (je ne sais
pas comment cela fonctionne: donc à creuser) ; inconvénient si le picture
box est grand au départ cela va vite "remplir" la BDD.

2. Puisque la couleur est monochrome et que ce n'est qu'une signature (donc
peu de données), serait-il possible de ne retenir que les coordonnées des
pixels "noircis" et de sauvegarder que ces suites de paires, tout en faisant
en parallèle la partie de source chargée de "renoircir" un picturebox vide ?

Pour ma part, je pencherai pour la seconde possibilité, car j'ai déjà en
sont temps fait une source qui permet de dessiner des formes classiques
(rectangles, cercles, couleur de trait, fond) et ou je ne sauvegarde que les
coordonnées de chaque forme (exemple pour un cercle : coordonnées du centre,
rayon,couleurs, type de remplissage du fond).. et je recrée cela lors de
l'impression.

merci pour vos pistes


Driss

10 réponses

1 2
Avatar
Jean-marc
Driss HANIB wrote:

Hello Driss,

Pour la partie signature, j'ai la partie traçage sur le picturebox ,
donc le problème n'est pas là. POur info bien sur la signature est
monochrome (quelquez soit la couleur choisie), par défaut noire.



OK

je vois deux pistes

1 . sauvegarde complète de l'image dans un champ mémo ou Blob (je
ne sais pas comment cela fonctionne: donc à creuser) ; inconvénient
si le picture box est grand au départ cela va vite "remplir" la BDD.

2. Puisque la couleur est monochrome et que ce n'est qu'une signature
(donc peu de données), serait-il possible de ne retenir que les
coordonnées des pixels "noircis" et de sauvegarder que ces suites de
paires, tout en faisant en parallèle la partie de source chargée de
"renoircir" un picturebox vide ?



Ce que je ferais :
- Je créerais un répertoire signatures
- Je stockerais le contenu de la picture box en jpg ou bmp peu importe
dans ce répertoire en lui affectant un nom unique
- Je créerais dans la base de données un champ texte "FichierSignature"
- Je stockerais uniquement le nom du fichier

C'est simple, portable, sans risques

C'est d'ailleurs ce que conseille notre FAQ dans l'article suivant :
http://faq.vb.free.fr/index.php?question7

Cependant, ce même article de la FAQ explique en détail comment
faire si on veut *vraiement* sauver l'image dans la BDD.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Driss HANIB
Merci Jean Marc

je pensais bien aussi à cela.
Ce que je voudrai c'est aussi "garantir" la "confidentialité du fichier.
A moins que je crypte ce fichier..
je veux pas "qu'on m'accuse" de pouvoir réuiliser cette signature..
Enfin je me fais peut petre un film.
je n'ai pas encore lu la FAQ, mais je voudrai quand même tester chaque pixel
pour voir celui qui est "noir".
J'ai vu GetPixel et j'ai un bout de code qui permet de voir la couleur,
mais.. en déplaçant la souris.

Y a -t'il un moyen de parcourrir chaque pixel pour déterminer sa couleur
sans bien sur untiliser de souris ?

Je regarde tout de suite la FAQ

Driss

"Jean-marc" a écrit dans le message de news:
4b290668$0$2846$
Driss HANIB wrote:

Hello Driss,

Pour la partie signature, j'ai la partie traçage sur le picturebox ,
donc le problème n'est pas là. POur info bien sur la signature est
monochrome (quelquez soit la couleur choisie), par défaut noire.



OK

je vois deux pistes

1 . sauvegarde complète de l'image dans un champ mémo ou Blob (je
ne sais pas comment cela fonctionne: donc à creuser) ; inconvénient
si le picture box est grand au départ cela va vite "remplir" la BDD.

2. Puisque la couleur est monochrome et que ce n'est qu'une signature
(donc peu de données), serait-il possible de ne retenir que les
coordonnées des pixels "noircis" et de sauvegarder que ces suites de
paires, tout en faisant en parallèle la partie de source chargée de
"renoircir" un picturebox vide ?



Ce que je ferais :
- Je créerais un répertoire signatures
- Je stockerais le contenu de la picture box en jpg ou bmp peu importe
dans ce répertoire en lui affectant un nom unique
- Je créerais dans la base de données un champ texte "FichierSignature"
- Je stockerais uniquement le nom du fichier

C'est simple, portable, sans risques

C'est d'ailleurs ce que conseille notre FAQ dans l'article suivant :
http://faq.vb.free.fr/index.php?question7

Cependant, ce même article de la FAQ explique en détail comment
faire si on veut *vraiement* sauver l'image dans la BDD.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
Driss HANIB wrote:
Merci Jean Marc

je pensais bien aussi à cela.
Ce que je voudrai c'est aussi "garantir" la "confidentialité du
fichier.



Remarque: qu'il soit en base ou en fichier, le problème reste
le même.

A moins que je crypte ce fichier..
je veux pas "qu'on m'accuse" de pouvoir réuiliser cette signature..
Enfin je me fais peut petre un film.
je n'ai pas encore lu la FAQ, mais je voudrai quand même tester
chaque pixel pour voir celui qui est "noir".
J'ai vu GetPixel et j'ai un bout de code qui permet de voir la
couleur, mais.. en déplaçant la souris.

Y a -t'il un moyen de parcourrir chaque pixel pour déterminer sa
couleur sans bien sur untiliser de souris ?



Bien sur: tu as la Méthode Point() des PictureBox qui renvoie
la couleur aux coordonnées x,y sous forme d'un long:

Dim r As Long

r = Picture1.Point(x, Y)

Du coup pour examiner tous les pixel de ta pictureBox:

Dim r As Long
Dim x As Single, y As Single

For x = 1 To Picture1.ScaleWidth
For y = 1 To Picture1.ScaleHeight
r = Picture1.Point(x, y)
Next y
Next x

Note: c'est plus commode si tes unités sont des pixels.

Si tu veux du RVB :
http://faq.vb.free.fr/index.php?question7

Bonne suite !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
driss hanib
merci jean marc
Je vais tester les doifférentes options

Toujours completes tes réponses

Driss

"Jean-marc" a écrit dans le message de news:
4b292089$0$2846$
Driss HANIB wrote:
Merci Jean Marc

je pensais bien aussi à cela.
Ce que je voudrai c'est aussi "garantir" la "confidentialité du
fichier.



Remarque: qu'il soit en base ou en fichier, le problème reste
le même.

A moins que je crypte ce fichier..
je veux pas "qu'on m'accuse" de pouvoir réuiliser cette signature..
Enfin je me fais peut petre un film.
je n'ai pas encore lu la FAQ, mais je voudrai quand même tester
chaque pixel pour voir celui qui est "noir".
J'ai vu GetPixel et j'ai un bout de code qui permet de voir la
couleur, mais.. en déplaçant la souris.

Y a -t'il un moyen de parcourrir chaque pixel pour déterminer sa
couleur sans bien sur untiliser de souris ?



Bien sur: tu as la Méthode Point() des PictureBox qui renvoie
la couleur aux coordonnées x,y sous forme d'un long:

Dim r As Long

r = Picture1.Point(x, Y)

Du coup pour examiner tous les pixel de ta pictureBox:

Dim r As Long
Dim x As Single, y As Single

For x = 1 To Picture1.ScaleWidth
For y = 1 To Picture1.ScaleHeight
r = Picture1.Point(x, y)
Next y
Next x

Note: c'est plus commode si tes unités sont des pixels.

Si tu veux du RVB :
http://faq.vb.free.fr/index.php?question7

Bonne suite !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
driss hanib
Salut Jean Marc et aux autres bien sur..
Voici en lien
http://www.cijoint.fr/cjlink.php?file=cj200912/cijk9XeUn5.pdf
(transformer l'extension pdf en rar et dezippez)

le source permettant de conserver uniquement les
points d'une certaine couleur et créant donc un tableu de coordonnées.
Le bouton ">>>>" fait d'une part l'extraction et d'autre part réécrit les
points dans le picturebox destinaitaire de droite.
Il indique en passant le nombre de points extraits et le nombre total de
points du picturebox de départ

La partie sauvegarde Access n'est pas faite bien sur : peut être un champ
memo avec la forme X/Y/X/Y/X/Y...

Votre avis
Même si l'enregistrement de l'image est aussi une solution. Peut être plus
portable ma solution ..

Mais bon, est la plus rapide ou la meilleure qualité/prix

Driss




"driss hanib" a écrit dans le message de news:
%
merci jean marc
Je vais tester les doifférentes options

Toujours completes tes réponses

Driss

"Jean-marc" a écrit dans le message de news:
4b292089$0$2846$
Driss HANIB wrote:
Merci Jean Marc

je pensais bien aussi à cela.
Ce que je voudrai c'est aussi "garantir" la "confidentialité du
fichier.



Remarque: qu'il soit en base ou en fichier, le problème reste
le même.

A moins que je crypte ce fichier..
je veux pas "qu'on m'accuse" de pouvoir réuiliser cette signature..
Enfin je me fais peut petre un film.
je n'ai pas encore lu la FAQ, mais je voudrai quand même tester
chaque pixel pour voir celui qui est "noir".
J'ai vu GetPixel et j'ai un bout de code qui permet de voir la
couleur, mais.. en déplaçant la souris.

Y a -t'il un moyen de parcourrir chaque pixel pour déterminer sa
couleur sans bien sur untiliser de souris ?



Bien sur: tu as la Méthode Point() des PictureBox qui renvoie
la couleur aux coordonnées x,y sous forme d'un long:

Dim r As Long

r = Picture1.Point(x, Y)

Du coup pour examiner tous les pixel de ta pictureBox:

Dim r As Long
Dim x As Single, y As Single

For x = 1 To Picture1.ScaleWidth
For y = 1 To Picture1.ScaleHeight
r = Picture1.Point(x, y)
Next y
Next x

Note: c'est plus commode si tes unités sont des pixels.

Si tu veux du RVB :
http://faq.vb.free.fr/index.php?question7

Bonne suite !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;










Avatar
Jean-marc
driss hanib wrote:
Salut Jean Marc et aux autres bien sur..




Hello Driss,

Voici en lien
http://www.cijoint.fr/cjlink.php?file=cj200912/cijk9XeUn5.pdf
(transformer l'extension pdf en rar et dezippez)

le source permettant de conserver uniquement les
points d'une certaine couleur et créant donc un tableu de coordonnées.
Le bouton ">>>>" fait d'une part l'extraction et d'autre part réécrit
les points dans le picturebox destinaitaire de droite.
Il indique en passant le nombre de points extraits et le nombre total
de points du picturebox de départ



Sympathique comme tout.

Une astuce pour toi quand tu fais des choses qui impliquent des Redim
Preserve.
Cette opération est couteuse : VB demande à l'OS de la mémoire,
recopie les donnéess de l'ancienne zone vers la nouvelle et libère
finalement
l'ancienne. Tout cela à un prix. Il faut donc tant que possible limiter le
nombre d'appels à Redim Preserve. Une technique toute simple est d'allouer
plus
grand, de réallouer par blocs puis d'ajuster à la fin.
Ici, pour une signature "normale" de 4000 points, tu ferais 4000 appels à
Redim
Preserve. Avec la petite astuce ci-dessous, plus que 4 :-)

Voici :

Private Sub TraitePicture(Pc As PictureBox, coul As Long)
' tiré de NG vb : Jean Marc
Dim X As Single, Y As Single

Dim Vmax As Long
Dim n As Long

' créé un tableau initial d'une certaine taille
' la taille initiale a peu d'importance
Vmax = 256
ReDim ListeCoord(Vmax)

For X = 1 To Pc.ScaleWidth
For Y = 1 To Pc.ScaleHeight
If Pc.Point(X, Y) = coul Then

' nombre de points + 1
n = n + 1

' si plus de points que taille max courante du tableau
If n > Vmax Then
' alors on réalloue 2 fois plus grand
Vmax = Vmax * 2
ReDim Preserve ListeCoord(Vmax)
End If

ListeCoord(n).X = X
ListeCoord(n).Y = Y
End If
Next Y
Next X

' et on ajuste à la fin au nombre exact
ReDim Preserve ListeCoord(n)
End Sub

(note: ici les gains en performances ne seront pas très importants car
il y a finalement assez peu d'appels, et d'autre part la méthode .Point()
est
elle même fort coûteuse et "masque" donc un peu les effets de Redim.
Mais c'est bon à savoir dans l'absolu...)



La partie sauvegarde Access n'est pas faite bien sur : peut être un
champ memo avec la forme X/Y/X/Y/X/Y...



Il est clair que cela va fonctionner.

Regardons les tailles : je ne sais pas quelles tailles auront tes PictureBox
dans l'application réelle, mais ici avec les tailles que tu as employées,
une
signature fait environ 4000 points (max).

Tu devrais donc stocker 4000 couples de coordonnées.
Si tu les sauves sous la forme xx1,yy1;xx2,yy2; etc, ca donne en gros ceci:

Chaque coordonnée occupera entre 2 et 3 caractères, disons 2,5 en moyenne.
On en a 2 (x et y). Plus un caractère entre le x et le y, plus un caractère
de séparation.
Ca nous fait donc (2.5+2.5+1+1)*4000 = 7 * 4000 = 28000 =:= 32K

Donc 32 Ko par signature, en gros; c'est acceptable pour un champ memo.

Votre avis



C'est une solution réaliste.

Même si l'enregistrement de l'image est aussi une solution. Peut être
plus portable ma solution ..



Ici, les 2 solutions sont valables. L'enregistrement de l'image dans un
répertoire à part est plus "classique", mais ta solution est ok aussi.

Mais bon, est la plus rapide ou la meilleure qualité/prix



Niveau perfs, franchement, ce sera kif-kif et ce n'est de toute façon
pas critique (ton appli ne passe pas sa vie à "scanner" des signatures).

Niveau temps de développement, tu as déjà presque tout fait de toute façon,
donc à mon avis ça revient au même également.

Niveau qualité/prix, je dirais qu'ici c'est vraiment un choix personnel.

En faveur de la solution "tout en base", on pourrait dire qu'alors il
suffit de sauvegarder un fichier (le .mdb) pour avoir une sauvegarde
complète
des données de l'appli, sans devoir sauver en plus le répertoire des
signatures.
C'est un argument un peu fragile, mais défendable.

En faveur de la solution "fichiers à part", on peut dire que c'est une
façon de faire plus classique, qui n'étonnerait pas un programmeur qui
devrait
reprendre/comprendre l'appli.

Bref, pour moi, aucune des 2 ne se détache vraiment : Tu peux choisir celle
qui te plait le plus, quelle que soit ton critère (plus beau, plus rapide,
plus amusant, plus 'secure', etc.)

Bonne journée !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Driss HANIB
Salut Jean Marc,

merci pour cette étude critique de "mon" source..
Quant à ton astuce sur le redim preserve effectivement je prends, car en
fait je l'utilise souvent. ceci dit comme souvent dans mes fonctions (
notamment lors d'accès à mes BDD) je renvoie un tableau de données et que je
compte le nombre de données en regardant la taille du tableau, je devrais
réajuster cette taille juste avant de sortir de la fonction.

Pour le reste je vais "étudier" les deux options. Comme tu dis, mon prog va
de temps en temps gérer une signature.

En tout cas merci pour ton approche.

Pour les autres, s'il y a des avis, n'hésitez pas.

Driss



"Jean-marc" a écrit dans le message de news:
4b29c9b7$0$2856$
driss hanib wrote:
Salut Jean Marc et aux autres bien sur..




Hello Driss,

Voici en lien
http://www.cijoint.fr/cjlink.php?file=cj200912/cijk9XeUn5.pdf
(transformer l'extension pdf en rar et dezippez)

le source permettant de conserver uniquement les
points d'une certaine couleur et créant donc un tableu de coordonnées.
Le bouton ">>>>" fait d'une part l'extraction et d'autre part réécrit
les points dans le picturebox destinaitaire de droite.
Il indique en passant le nombre de points extraits et le nombre total
de points du picturebox de départ



Sympathique comme tout.

Une astuce pour toi quand tu fais des choses qui impliquent des Redim
Preserve.
Cette opération est couteuse : VB demande à l'OS de la mémoire,
recopie les donnéess de l'ancienne zone vers la nouvelle et libère
finalement
l'ancienne. Tout cela à un prix. Il faut donc tant que possible limiter le
nombre d'appels à Redim Preserve. Une technique toute simple est d'allouer
plus
grand, de réallouer par blocs puis d'ajuster à la fin.
Ici, pour une signature "normale" de 4000 points, tu ferais 4000 appels à
Redim
Preserve. Avec la petite astuce ci-dessous, plus que 4 :-)

Voici :

Private Sub TraitePicture(Pc As PictureBox, coul As Long)
' tiré de NG vb : Jean Marc
Dim X As Single, Y As Single

Dim Vmax As Long
Dim n As Long

' créé un tableau initial d'une certaine taille
' la taille initiale a peu d'importance
Vmax = 256
ReDim ListeCoord(Vmax)

For X = 1 To Pc.ScaleWidth
For Y = 1 To Pc.ScaleHeight
If Pc.Point(X, Y) = coul Then

' nombre de points + 1
n = n + 1

' si plus de points que taille max courante du tableau
If n > Vmax Then
' alors on réalloue 2 fois plus grand
Vmax = Vmax * 2
ReDim Preserve ListeCoord(Vmax)
End If

ListeCoord(n).X = X
ListeCoord(n).Y = Y
End If
Next Y
Next X

' et on ajuste à la fin au nombre exact
ReDim Preserve ListeCoord(n)
End Sub

(note: ici les gains en performances ne seront pas très importants car
il y a finalement assez peu d'appels, et d'autre part la méthode .Point()
est
elle même fort coûteuse et "masque" donc un peu les effets de Redim.
Mais c'est bon à savoir dans l'absolu...)



La partie sauvegarde Access n'est pas faite bien sur : peut être un
champ memo avec la forme X/Y/X/Y/X/Y...



Il est clair que cela va fonctionner.

Regardons les tailles : je ne sais pas quelles tailles auront tes
PictureBox
dans l'application réelle, mais ici avec les tailles que tu as employées,
une
signature fait environ 4000 points (max).

Tu devrais donc stocker 4000 couples de coordonnées.
Si tu les sauves sous la forme xx1,yy1;xx2,yy2; etc, ca donne en gros
ceci:

Chaque coordonnée occupera entre 2 et 3 caractères, disons 2,5 en moyenne.
On en a 2 (x et y). Plus un caractère entre le x et le y, plus un
caractère
de séparation.
Ca nous fait donc (2.5+2.5+1+1)*4000 = 7 * 4000 = 28000 =:= 32K

Donc 32 Ko par signature, en gros; c'est acceptable pour un champ memo.

Votre avis



C'est une solution réaliste.

Même si l'enregistrement de l'image est aussi une solution. Peut être
plus portable ma solution ..



Ici, les 2 solutions sont valables. L'enregistrement de l'image dans un
répertoire à part est plus "classique", mais ta solution est ok aussi.

Mais bon, est la plus rapide ou la meilleure qualité/prix



Niveau perfs, franchement, ce sera kif-kif et ce n'est de toute façon
pas critique (ton appli ne passe pas sa vie à "scanner" des signatures).

Niveau temps de développement, tu as déjà presque tout fait de toute
façon,
donc à mon avis ça revient au même également.

Niveau qualité/prix, je dirais qu'ici c'est vraiment un choix personnel.

En faveur de la solution "tout en base", on pourrait dire qu'alors il
suffit de sauvegarder un fichier (le .mdb) pour avoir une sauvegarde
complète
des données de l'appli, sans devoir sauver en plus le répertoire des
signatures.
C'est un argument un peu fragile, mais défendable.

En faveur de la solution "fichiers à part", on peut dire que c'est une
façon de faire plus classique, qui n'étonnerait pas un programmeur qui
devrait
reprendre/comprendre l'appli.

Bref, pour moi, aucune des 2 ne se détache vraiment : Tu peux choisir
celle
qui te plait le plus, quelle que soit ton critère (plus beau, plus rapide,
plus amusant, plus 'secure', etc.)

Bonne journée !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Driss HANIB
Jean Marc (ou les autres)

Comment font les logiciels d'OCR pour justement "lire" une image et détecter
les caractères ? Je ne parle pas de l'interprétation, mais déjà de
l'isolement du caractère ?

Driss

"Jean-marc" a écrit dans le message de news:
4b29c9b7$0$2856$
driss hanib wrote:
Salut Jean Marc et aux autres bien sur..




Hello Driss,

Voici en lien
http://www.cijoint.fr/cjlink.php?file=cj200912/cijk9XeUn5.pdf
(transformer l'extension pdf en rar et dezippez)

le source permettant de conserver uniquement les
points d'une certaine couleur et créant donc un tableu de coordonnées.
Le bouton ">>>>" fait d'une part l'extraction et d'autre part réécrit
les points dans le picturebox destinaitaire de droite.
Il indique en passant le nombre de points extraits et le nombre total
de points du picturebox de départ



Sympathique comme tout.

Une astuce pour toi quand tu fais des choses qui impliquent des Redim
Preserve.
Cette opération est couteuse : VB demande à l'OS de la mémoire,
recopie les donnéess de l'ancienne zone vers la nouvelle et libère
finalement
l'ancienne. Tout cela à un prix. Il faut donc tant que possible limiter le
nombre d'appels à Redim Preserve. Une technique toute simple est d'allouer
plus
grand, de réallouer par blocs puis d'ajuster à la fin.
Ici, pour une signature "normale" de 4000 points, tu ferais 4000 appels à
Redim
Preserve. Avec la petite astuce ci-dessous, plus que 4 :-)

Voici :

Private Sub TraitePicture(Pc As PictureBox, coul As Long)
' tiré de NG vb : Jean Marc
Dim X As Single, Y As Single

Dim Vmax As Long
Dim n As Long

' créé un tableau initial d'une certaine taille
' la taille initiale a peu d'importance
Vmax = 256
ReDim ListeCoord(Vmax)

For X = 1 To Pc.ScaleWidth
For Y = 1 To Pc.ScaleHeight
If Pc.Point(X, Y) = coul Then

' nombre de points + 1
n = n + 1

' si plus de points que taille max courante du tableau
If n > Vmax Then
' alors on réalloue 2 fois plus grand
Vmax = Vmax * 2
ReDim Preserve ListeCoord(Vmax)
End If

ListeCoord(n).X = X
ListeCoord(n).Y = Y
End If
Next Y
Next X

' et on ajuste à la fin au nombre exact
ReDim Preserve ListeCoord(n)
End Sub

(note: ici les gains en performances ne seront pas très importants car
il y a finalement assez peu d'appels, et d'autre part la méthode .Point()
est
elle même fort coûteuse et "masque" donc un peu les effets de Redim.
Mais c'est bon à savoir dans l'absolu...)



La partie sauvegarde Access n'est pas faite bien sur : peut être un
champ memo avec la forme X/Y/X/Y/X/Y...



Il est clair que cela va fonctionner.

Regardons les tailles : je ne sais pas quelles tailles auront tes
PictureBox
dans l'application réelle, mais ici avec les tailles que tu as employées,
une
signature fait environ 4000 points (max).

Tu devrais donc stocker 4000 couples de coordonnées.
Si tu les sauves sous la forme xx1,yy1;xx2,yy2; etc, ca donne en gros
ceci:

Chaque coordonnée occupera entre 2 et 3 caractères, disons 2,5 en moyenne.
On en a 2 (x et y). Plus un caractère entre le x et le y, plus un
caractère
de séparation.
Ca nous fait donc (2.5+2.5+1+1)*4000 = 7 * 4000 = 28000 =:= 32K

Donc 32 Ko par signature, en gros; c'est acceptable pour un champ memo.

Votre avis



C'est une solution réaliste.

Même si l'enregistrement de l'image est aussi une solution. Peut être
plus portable ma solution ..



Ici, les 2 solutions sont valables. L'enregistrement de l'image dans un
répertoire à part est plus "classique", mais ta solution est ok aussi.

Mais bon, est la plus rapide ou la meilleure qualité/prix



Niveau perfs, franchement, ce sera kif-kif et ce n'est de toute façon
pas critique (ton appli ne passe pas sa vie à "scanner" des signatures).

Niveau temps de développement, tu as déjà presque tout fait de toute
façon,
donc à mon avis ça revient au même également.

Niveau qualité/prix, je dirais qu'ici c'est vraiment un choix personnel.

En faveur de la solution "tout en base", on pourrait dire qu'alors il
suffit de sauvegarder un fichier (le .mdb) pour avoir une sauvegarde
complète
des données de l'appli, sans devoir sauver en plus le répertoire des
signatures.
C'est un argument un peu fragile, mais défendable.

En faveur de la solution "fichiers à part", on peut dire que c'est une
façon de faire plus classique, qui n'étonnerait pas un programmeur qui
devrait
reprendre/comprendre l'appli.

Bref, pour moi, aucune des 2 ne se détache vraiment : Tu peux choisir
celle
qui te plait le plus, quelle que soit ton critère (plus beau, plus rapide,
plus amusant, plus 'secure', etc.)

Bonne journée !

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
Driss HANIB wrote:
Salut Jean Marc,

merci pour cette étude critique de "mon" source..
Quant à ton astuce sur le redim preserve effectivement je prends, car
en fait je l'utilise souvent. ceci dit comme souvent dans mes
fonctions ( notamment lors d'accès à mes BDD) je renvoie un tableau
de données et que je compte le nombre de données en regardant la
taille du tableau, je devrais réajuster cette taille juste avant de
sortir de la fonction.



C'est bien ce que je fais dans l'exemple que je t'ai donné :

...
' et on ajuste à la fin au nombre exact
ReDim Preserve ListeCoord(n)
End Sub


Pour le reste je vais "étudier" les deux options. Comme tu dis, mon
prog va de temps en temps gérer une signature.

En tout cas merci pour ton approche.



De rien !

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jean-marc
Driss HANIB wrote:
Jean Marc (ou les autres)

Comment font les logiciels d'OCR pour justement "lire" une image et
détecter les caractères ? Je ne parle pas de l'interprétation, mais
déjà de l'isolement du caractère ?



Je ne suis pas un expert, mais je connais les principes; c'est pas mal
de maths pour définir des seuils permettant dans un premier temps de ne
garder que la zone à traiter: élimination du bruit, détourage, passage
en noir et blanc, corrections (images inclinées, etc.)

Puis encore pas mal de maths pour isoler les caractères: détection de
contours, courbes, etc. C'est assez pointu en fait.


--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
1 2