PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → Rogner une image
Rogner une image
Started by Ian, Apr., 17 2018 5:17 PM - 4 replies
Registered member
106 messages
Popularité : +3 (3 votes)
Posted on April, 17 2018 - 5:17 PM
Bonjour à tous,

dans mon appli je voudrai permettre à mes utilisateurs de signer. Jusque là ça va, mais je voudrai récupérer une signature sans bordure blanche.
Je m explique :

je voudrais donc rogner l'image en supprimant les parties blanches (sans pixels) que l'image générée.

Sachant qu'on ne signe pas tous de la même façon (haute ou petite signature, longue ou courte), je pense qu'il me faut prévoir un rognage automatique.

Avez-vous une idée efficace pour m'aider sur ce plan la svp ?

--
- ian -
Registered member
106 messages
Popularité : +3 (3 votes)
Posted on April, 18 2018 - 11:57 AM
Re Bonjour,

je pense avoir trouvé une solution

merci quand même

--
- ian -
Posted on April, 19 2018 - 9:06 AM
Ian a formulé la demande :
Re Bonjour,

je pense avoir trouvé une solution

merci quand même


bonjour
on est content pour toi

mais il est d'usage d'expliquer sa solution.

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Registered member
106 messages
Popularité : +3 (3 votes)
Posted on April, 19 2018 - 10:09 AM
Bonjour Roumegou,

Désolé, je ne pensais pas que ça pouvait être interessant

je balaye mon image :

1) de gauche à droite et de haut en bas dans 2 boucles imbriquées pour récupérer le X du premier pixel non blanc dans ce sens
2) de droite à gauche et de haut en bas dans 2 boucles imbriquées pour récupérer le X du premier pixel non blanc dans ce sens
3) de haut en bas et de gauche à droite dans 2 boucles imbriquées pour récupérer le Y du premier pixel non blanc dans ce sens
4) de bas en haut et de gauche à droite dans 2 boucles imbriquées pour récupérer le Y du premier pixel non blanc dans ce sens

ps : Le traitement dure 5 secondes maxi si la signature est microscopique et en bas à droite de mon champ image sur un téléphone de 6". Je ne le trouve donc pas trop lourd.

// X 1
POUR Temp_X = 1 _A_ IMG_Signature..Largeur-1
POUR Temp_Y = 1 _A_ IMG_Signature..Hauteur-1
SI dPixelCouleur(IMG_Signature,Temp_X,Temp_Y) <> Blanc ALORS
X1 = Temp_X
SORTIR
FIN
FIN
SI X1 <> 0 ALORS SORTIR
FIN

// x 2
POUR Temp_X = IMG_Signature..Largeur-1 _A_ 1 PAS - 1
POUR Temp_Y = 1 _A_ IMG_Signature..Hauteur-1
SI dPixelCouleur(IMG_Signature,Temp_X,Temp_Y) <> Blanc ALORS
X2 = Temp_X
SORTIR
FIN
FIN
SI X2 <> 0 ALORS SORTIR
FIN

// Y 1
POUR Temp_Y = 1 _A_ IMG_Signature..Hauteur-1
POUR Temp_X = 1 _A_ IMG_Signature..Largeur-1
SI dPixelCouleur(IMG_Signature,Temp_X,Temp_Y) <> Blanc ALORS
Y1 = Temp_Y
SORTIR
FIN
FIN
SI Y1 <> 0 ALORS SORTIR
FIN

// Y 2
POUR Temp_Y = IMG_Signature..Hauteur-1 _A_ 1 PAS -1
POUR Temp_X = 1 _A_ IMG_Signature..Largeur-1
SI dPixelCouleur(IMG_Signature,Temp_X,Temp_Y) <> Blanc ALORS
Y2 = Temp_Y
SORTIR
FIN
FIN
SI Y2 <> 0 ALORS SORTIR
FIN


dans je fais un test avec la fonction dRectangle, le rectangle encadre bien la signature :
dStylo(RougeFoncé)
dRectangle(X1,Y1,X2,Y2)


Par contre je rencontre probleme avec dCopie :

Je veux copier la zone sélectionnée de mon img principale (IMG_Signature) dans un autre champ image (IMG_signatureFinale) que j'ai au préalable redimensionnée.

Sur le simulateur, aucun soucis la zone que je veux est bien copiée et bien enregistrée en base
Mais sur mon téléphone (Galaxy S7), la zone n 'est pas copiée. Je me retrouve avec une image aux bonnes dimensions mais sans son contenue.
J'ai testé la m^me eméthode avec des variables image , même résultats

IMG_SignatureFinale..Largeur = X2-X1+1
IMG_SignatureFinale..Hauteur = Y2-Y1+1

dDébutDessin(IMG_SignatureFinale)

dCopie(IMG_Signature,IMG_SignatureFinale,X1,Y1,X2-X1+1,Y2-Y1+1,1,1,IMG_SignatureFinale..Largeur,IMG_SignatureFinale..Hauteur)


Si tu as une idée ou qq'un d'autres, je suis preneur

cdtl

--
- ian -
Registered member
106 messages
Popularité : +3 (3 votes)
Posted on April, 19 2018 - 11:53 AM
Re bonjour,

finalement j'ai trouvé à nouveau ma solution pour le problème que je rencontre avec dCopie

J'utilise dDécoupe à la place :

ImageTemp est une Image
SignatureFinale est une Image

dSauveImageJPEG(IMG_Signature,CheminSignature,100)

ImageTemp = dChargeImage(CheminSignature)
SignatureFinale = dDécoupe(ImageTemp,X1,Y1,X2-X1+1,Y2-Y1+1)


Je suis obligé de faire un dSauveImageJPEG de mon champ image puis dChargeImage dans une variable image sinon le dDécoupe ne fonctionne pas.

Ah moins que je raconte n'importe quoi, de cette fonction ça fonctionne

cdlt

--
- ian -