Graphique: fusion de 2 images

Soyez le premier à donner votre avis sur cette source.

Vue 4 790 fois - Téléchargée 437 fois

Description

Cette source permet de fusionner 2 images (comme une superposition de 2 images avec un efffet de transparence: voir l'apercu) avec possibilité de réglages. C'est juste pour le principe que je mets cette source: vb étant lent, c'est completement inutile de développer des progs graphiques... (il faudrait le faire en C). Voila
@+

Source / Exemple :


Dim r(1), g(1), b(1)
Dim a As Integer

Private Sub c_Click()
PictureFusion sl1.Value / 100, sl2.Value / 100
End Sub

Private Sub PictureFusion(Coeff1 As Single, Coeff2 As Single)
For x = 0 To p(2).ScaleWidth
    For y = 0 To p(2).ScaleHeight
        For a = 0 To 1
            WannaRGB p(a).Point(x, y), a
        Next a
    p(2).PSet (x, y), RGB(r(0) * Coeff1 + r(1) * Coeff2, g(0) * Coeff1 + g(1) * Coeff2, b(0) * Coeff1 + b(1) * Coeff2)
    Next y
'DoEvents
Next x
End Sub

Private Sub WannaRGB(lng As Long, ind As Integer)
b(ind) = Abs(Fix(lng / (256 ^ 2)))
g(ind) = Abs(Fix((lng - b(ind) * (256 ^ 2)) / 256))
r(ind) = Abs(Fix(lng - b(ind) * (256 ^ 2) - g(ind) * 256))
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_AntiSlash
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003
-
lol, merci de me prévenir que cette source est pas optimisée... (il me semble avoir dit que c'etait juste pour le principe ?)
Proger>> ta source a l'air vraiment interessante, faut que je regarde.
Warny>> merci de tes remarques, je mettrais peut-etre a jour cette source si j'ai le temps...
@+
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Salut,
Plutot que d'utiliser des nombre en virgule flottante (et toute la conversion qui va autour) pour calculer la couleur de tes points, tu devrais remplacer l'opérateur slash (division) par l'opérateur antislash (division entière).
Autre chose, plutot que de calculer les puissances à chaque opération (c'est lent) je te conseille de définir des constantes (typées bien sur) qui supportent tes valeur ou d'indiquer directement le résultat du calcul.
Dernier point, assure toi que ton image est en pixels !!!
Pour aller plus vite, je te conseil quand même de ne pas traiter sur la sortie graphique directement (parce que la mémoire graphique est pas accessible tout le temps, qu'elle s'impose des vérifications permanentes, qu'elle est soumise à des évenements...), mais sur des objets de type StdPicture (c'est fourni est standart sur le vb) qui permettent de traiter les images dans des espace mémoire séparer non soumis a tout ce que je t'ai raconté avant.
cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
82 -
Bon d'accord, VB n'est pas fais pour le graphisme, mais cette source est tout de même bien sympathique. bravo.

DARK SIDIOUS
Proger
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008
-
ADN733R > lol il me faut ton générateur de barratin!

Antislash, ton code dure 1.2 secondes sur ma machine (en supprimant la barre de progression). En l'optimisant je suis descendu à moins de 0.6 secondes.

On peut encore améliorer la rapidité en n'utilisant pas la fonction .Point() (ou l'api GetPixel() ) mais en travaillant directement avec les bitmap en mémoire (stocké sous forme de tableau), ce qui se fait en C++ d'ailleur.

manip' rapide de bitmap :
http://www.vbfrance.com/article.aspx?Val=6251

mais c'est sûr que sans pointeurs, VB aura une grosse lacune par rapport au C (avé les pointeurs, ton wannargb serai instantané, et on ne passerai pas par RGB() ni .Point() pour constituer/relever les couleurs! )
ADN733R
Messages postés
63
Date d'inscription
mardi 15 mai 2001
Statut
Membre
Dernière intervention
14 mai 2004
-
Mesdames, Messieurs la conjoncture actuelle doit s'intégrer à la finalisation globale d'un processus allant vers plus d'égalité.
Je reste fondamentalement persuader que l'acuité des problèmes de la vie quotidienne a pour conséquence obligatoire l'urgente nécessité d'une valorisation sans concession de nos caractères spécifiques.
Par ailleurs c'est en toute connaissance de cause que je peut affirmer aujourd'hui que l'effort prioritaire en faveur du statut précaire des exclus conforte mon désir incontestable d'aller dans le sens de solutions rapides correspondant aux grands axes sociaux principaux.
Et c'est en toute conscience que je déclare avec convistion que l'aspiration plus légitime de chacun au progrès social fait des préoccupations de la population de base l'élaboration d'un programme plus humain, plus fraternel, et plus juste.
bien à vous

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.