PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Wx - Concatenar imagens (Img_C = Img_A + Img_B) e salvando a imagem resultante.
Wx - Concatenar imagens (Img_C = Img_A + Img_B) e salvando a imagem resultante.
Iniciado por adrianoboller, mar., 08 2016 1:30 AM - 1 resposta
Membro registado
3.168 mensagems
Popularité : +89 (91 votes)
Publicado em março, 08 2016 - 1:30 AM
Wx - Concatenar imagens (Img_C = Img_A + Img_B)





CODE:

// Copy of IMG_a in IMG_b
imagem_original is an Image = IMG_b

dCopyBlt(IMG_a, IMG_b, copyImage)

dCopy(IMG_b,IMG_c)

IMG_b = imagem_original

dSaveImageJPEG(IMG_c, "c:\temp\IMG_C.JPEG")













Outros Links:

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/732-rotate-image/read.awp…

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/731-resize-image/read.awp…

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/734-salvar-foto/read.awp…

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/735-salvar-video/read.awp…

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/729-imagem-arraybytes/read.awp…






Bons estudos a todos!

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
3.168 mensagems
Popularité : +89 (91 votes)
Publicado em agosto, 09 2016 - 11:49 PM
Alterando uma imagem colorida para preto e branco (tons de cinza):

Exemplo:

dCopieImage(IMG_FAX1, IMG_FAX1, copiePasSrcCopie)
//copie de l'image d'origine dans l'image destination
//en niveau de gris
IMG_FAX1=dSauveImageJPEG(IMG_ORIGINE,enMémoire,100,imgNiveauDeGris)
//converti l'image destination en monochrome
Floyd_Steinberg(IMG_FAX1,POT_SEUIL)



// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//Floyd_Steinberg (<ChampImage> [, <rSeuil>])
//
// Paramètres :
// ChampImage : <indiquez ici le rôle de ChampImage>
// rSeuil (valeur par défaut=50) : < indiquez ici le rôle de nSeuil >
// Valeur de retour :
// Aucune
//
// Exemple :
// Indiquez ici un exemple d'utilisation.
//
Procedure Floyd_Steinberg(ChampImage,rSeuil=50)
nLargeur,nHauteur sont des entiers

nLargeur =ChampImage..Largeur
nHauteur =ChampImage..Hauteur

//fonction de dessin sur le champ image
dDébutDessin(ChampImage)

nCouleurPoint est un entier
nNouvelleCouleurPoint est un entier
nQteErreur est un entier

//Parcours en largeur
POUR x=1 _A_ nLargeur
//et en hauteur
POUR y=1 _A_ nHauteur
//couleur du point en cours
nCouleurPoint=dPixelCouleur( x,y)
//Couleur du point que l'in va mettre à la place, en fonction de la luminosité (ici rSeuil %)
nNouvelleCouleurPoint=NouvelleCouleur(nCouleurPoint,rSeuil)
//Change la couleur du point
dPoint(x,y,nNouvelleCouleurPoint)
//Calcul de l'erreur qu'il y avait sur le point pour effectuer le changement de couleur
SI nNouvelleCouleurPoint<>iNoir ALORS
nQteErreur=255
SINON
nQteErreur=0
FIN

// ATTENTION : C'est une application simpliste qui n'a pour but uniquement de montrer qu'il est facilement possible d'appliquer des algorithmes de traitement d'image
// Applique l'algorithme de Floyd-Steinberg
// L'algorithme de Floyd-Steinberg est utilisé en traitement d'images.
// Cet algorithme effectue un tramage par la diffusion de l'erreur de quantification d'un pixel à ses voisins.
// Plus précisement, 7/16 de son erreur est ajoutée au pixel à sa droite,
// 3/16 au pixel situé en bas à gauche,
// 5/16 au pixel situé en dessous et
// 1/16 au pixel en bas à droite.
//On applique dans l'erreur sur les point voisin
SI x<nLargeur ALORS dPoint(x+1,y,dPixelCouleur(x+1,y)+(nQteErreur*(7/16)))
SI y<nHauteur ALORS dPoint(x-1,y+1,dPixelCouleur(x-1,y+1)+(nQteErreur*(3/16)))
SI y<nHauteur ALORS dPoint(x,y+1,dPixelCouleur(x,y+1)+(nQteErreur*(5/16)))
SI y<nHauteur ALORS dPoint(x+1,y+1,dPixelCouleur(x+1,y+1)+(nQteErreur*(1/16)))
FIN
FIN

//que du N&B
POUR x=1 _A_ nLargeur
//et en hauteur
POUR y=1 _A_ nHauteur
nCouleurPoint=dPixelCouleur( x,y)
SI nCouleurPoint<>iNoir ALORS
dPoint(x,y,iBlanc)
FIN
FIN
FIN



// Résumé : Passe l'image se trouvant dans le champ image en monochrome
// Syntaxe :
//Monochrome (<ChampImage> [, <rSeuil>])
//
// Paramètres :
// ChampImage : Champ image contenant l'image a passer en monochrome
// rSeuil (valeur par défaut=50) : Seuil de luminosité des point déterminat si le point doit être noir ou blanc
// Valeur de retour :
// Aucune
//
// Exemple :
// Monochrome(IMG_FAX,50)
//
Procedure Monochrome(ChampImage,rSeuil=50)

//taille du champ
nLargeur est un entier=ChampImage..Largeur
nHauteur est un entier=ChampImage..Hauteur
//fonction de dessin sur le champ image
dDébutDessin(ChampImage)
//parcours des points de l'image
//en largeur
POUR x=0 _A_ nLargeur
//et en hauteur
POUR y=0 _A_ nHauteur
//reaffecte la couleur à chaque point de l'image
//en fonction de la luminosité (ici rSeuil %)
dPoint(x,y,NouvelleCouleur(dPixelCouleur( x,y),rSeuil))


FIN
FIN



// Résumé : en fonction de la couleur passée en paramètre retourne la couleur correspond à l'effet. Donc Ici Noir ou Blanc
// Syntaxe :
//[ <Résultat> = ] NouvelleCouleur (<nCouleurPoint>, <rSeuil>)
//
// Paramètres :
// nCouleurPoint : couleur d'origine du point
// rSeuil : seuil de luminosité qui va déterminer si on transforme le point en noir ou en blanc
// Valeur de retour :
// entier : nouvelle couleur
//

Procedure NouvelleCouleur(nCouleurPoint,rSeuil)

//Couleur en en fonction de la luminosité (ici rSeuil %)
SI CouleurLuminosité(nCouleurPoint)>=rSeuil ALORS
//en remplace par un point noir
RENVOYER iNoir
SINON
//ou en remplace par un point blanc
RENVOYER iBlanc
FIN


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/