Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LOGICIEL DE RETOUCHE PHOTO STYLE PHOTOSHOP (29 EFFETS)


Information sur la source

Catégorie :Graphique Classé sous : logiciel, retouche, photo, effet Niveau : Débutant Date de création : 20/05/2001 Date de mise à jour : 13/06/2001 00:00:00 Vu / téléchargé: 66 132 / 5 449

Note :
9 / 10 - par 34 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Black-FX est un logiciel genre PhotoShop mais en VB...
ok, il n'y a pas autant de filtres que dans photoshop mais
il y en a assez pour faire de bon trucs.
Certain sont reproduits comme par exemple blur, Noise, ... mais
d'autres inedits comme Flag, Photo19, RGB-FX, ...
Black-FX c'est en tout 29 effets:
-Invert (Inversion des couleurs)
-X-Noise (bruit FX)
-Mosaic (pixelisations progressive)
-Blur (flou progressif)
-GrayScale (noir et blanc avec contrastes)
-Light++ (plus de lumiere)
-Light-- (moins de lumiere)
-STraT (St Germain Style)
-T°c (Thermic V2)
-Aqua-R (aquarelle)
-Photo19 (photo debut du siecle)
-RGB-FX (effet de couleurs)
-X-Black (Noir et blanc sans contrastes)
-H2O (reflet sur une flaque d'eau)
-PhotoCop (Photocopie)
-Comic (encre)
-Replace (recherche et change une couleur de l'image)
-Flash (Flash de lumiere)
-Flag (deformation sinusoïdale)
-true Noise (Bruit classic)
-Flip Horizontal (effet miroir)
-Set WallPaper (mettre l'image en cours en papier peint)
-7 filtres de couleurs personnalisables
undo et redo avec 6 actions de memoire
Restore pour re-aficher l'image d'origine
une palette à dessin tres complete:
-Crayon classique
-pipette
-loupe
-ligne
-cercle
-pot de peinture
-rectangle vide
-rectangle plein
-palette de couleurs
-aerographe à diametre variable
la possibilité d'ouvrir les BMP, JPG et Gif
la possibilité de sauvegarder en BMP
la possibilité de telecharger la derniere version sur 2 servers different en un clic de souris.
vous pouvez accedez à cette page en un clique de souris.
les menus possedent now des icons pour un aspect plus cool.

V 2.0.16 - Capture d'ecran disponible.

merci de voter ici:
http://www.vizue.com/?id=4312
 

Conclusion

un probleme? Un conseil?
blackwizzard@fr.st
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de filippos le 03/03/2002 14:45:28

Put1 t'es trop fort toi coment tu fait tt ca c tt simplement magnifique!!
Je suis debutant et je pense pas k'un jour j'arriverais a faire un gramme de ce ke tu as fait !!!
10/10
Respect (lol)
TiF'oU

signaler à un administrateur
Commentaire de devmax le 06/04/2002 12:43:35

et BlackWizard tes un boss toi
bravo
jai rarement vu mieux...

signaler à un administrateur
Commentaire de VB6Boss le 13/06/2002 16:36:50

Tres bon code. Mias tu pourrais un peu l'accelerer en enlevant les doevents.
Je suis en train de faire un prog de ce genre et ca accelere vachemant

signaler à un administrateur
Commentaire de BlackWizzard le 13/06/2002 17:40:57 administrateur CS

desolé, mais G pas le courage de reprendre la programmation du logiciel...
G plein d'autres projet, dont celui de me reconstruire des site web car je n'en ai plus aucun!

Par contre, si qqun vx recuperer les fonctions du prog ou tout simplement le modifier, ya pas de problemes pour ça!

signaler à un administrateur
Commentaire de VB6Boss le 17/06/2002 18:00:21

Et merde jarrive toujours en retard ctriste tout ca !!!! Sniff !!! C pas de ma faute je conaissais pas VB avant sniff.... Et maintenant tous les filtres que je me suis casse la tete a fere ===>> POUBELLE sniff
c triste tout ca sniff sniff :-(

signaler à un administrateur
Commentaire de BlackWizzard le 17/06/2002 18:04:21 administrateur CS

lol

signaler à un administrateur
Commentaire de crossblade le 05/07/2002 22:07:52

rien à dire.... excellent prog 10/10

signaler à un administrateur
Commentaire de Koiu le 26/09/2002 11:44:42

CCool!!! 10/10!!!!

signaler à un administrateur
Commentaire de Dalamar le 23/12/2002 23:56:44

génial

signaler à un administrateur
Commentaire de Proutie66 le 05/01/2003 17:17:56

ben put1!!!
En plus vous dites ke cest pas rapide mais bon adobe c 2* + rapide mais ca vaut : 1000 ??????? !

signaler à un administrateur
Commentaire de scalp57 le 14/07/2003 12:08:05

Terrible ! T'es fort toi, hein ! Heu... ben... y a rein a dire hien !...

signaler à un administrateur
Commentaire de aKheNathOn le 29/04/2004 15:52:09

Je suis certain qu'avec visual basic on peut avoir les mêmes résultats qu'adobe au niveau rendu, le seul pb c'est qu'on utilise pas les mêmes methodes.

J'ai remarqué qu'avec un :

f.p.Visible = False
avant le Select Case Index de la form Menu_FX et en le remettant à true aprés on gagne un temps non négligeable pour une petite image 400 * 400 environ 800 Millisecondes (en mode non compilé) ...

Alors maintenant on va essayer de voir pk t'as ton moteur qui est deux fois plus lent que celui d'adobe...

Tout le monde va penser que c'est à cause de VB. La fonction inversant les couleurs d'une image devrais être instantanée, sur un P3 500 elle prend 2400 Msec ...

Je regarde donc le code que tu as écrit :

Sub Invert(picBox As PictureBox)
'Invert the image of a picturebox
Dim newVal As Integer, h As Integer, W As Integer, K As Integer
Dim C As Long
Dim opRed As Long, opBlue As Long, opGreen As Long

picBox.ScaleMode = 3

For h = 0 To picBox.ScaleHeight
    For W = 0 To picBox.ScaleWidth
        C = GetPixel(picBox.hdc, W, h)
        RGBfromLONG C
        opRed = 255 - rRed
        opGreen = 255 - rGreen
        opBlue = 255 - rBlue
        C = RGB(opRed, opGreen, opBlue)
        GetPixel picBox.hdc, W, h, C
    Next W
    pictBox.Refresh
Next h
End Sub

Temps d'execution 2350 MS

Je vais donc chercher à l'optimise, j'eneleve le rafraichissement qui prend beaucoups de temps horloge :

For h = 0 To picBox.ScaleHeight
    For W = 0 To picBox.ScaleWidth
        C = GetPixel(picBox.hdc, W, h)
        RGBfromLONG C
        opRed = 255 - rRed
        opGreen = 255 - rGreen
        opBlue = 255 - rBlue
        C = RGB(opRed, opGreen, opBlue)
        GetPixel picBox.hdc, W, h, C
    Next W
Next h

Temps d'execution 1863 MSec, donc environ 500 Msec, ce qui fait une grosse partie du code.
Je vérifie maintenant l'efficacité des apis que t'utilises :

For h = 0 To picBox.ScaleHeight
    For W = 0 To picBox.ScaleWidth
        C = GetPixel(picBox.hdc, W, h)
        GetPixel picBox.hdc, W, h, C
    Next W
Next h

Résultat 1360 MS rien que pour executer ces deux fonctions !!!! En gros y'à vraiment un gros besoin d'optimisation car

For h = 0 To picBox.ScaleHeight
    For W = 0 To picBox.ScaleWidth
    Next W
Next h

Ne me prend que 10 MSec ...

Maintenant je vais te dire pourquoi c'est lent (Et encore ... ton code est bien optimisé) ...

Tu charges lors de chaque filtre la matrice des points en mémoire, alors que tu pourras simplement traiter en mémoire cette matrice que lors du chargement, et la modifier au fur et à mesure.
Pour cela utilises GetBitmapBits pour charger cette matrice en mémoire, et une fois tous les points traités utilises SetBitmapBits pour rafraichir le dessin.

Pour te donner un ordre d'idée j'arrive à 400 Ms en mode debuggage sous VB pour l'inversion de couleur.

Je te donne le code pour que tu puisse tester.

Au début du module image32 ajoute ces déclarations :

Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Dim PicBits() As Byte, PicInfo As BITMAP
Dim Cnt As Long, BytesPerLine As Long

Ensuite dans ce même module remplace la fonction Invert par celle-ci :
Public Sub Invert()
'Invert the image of a picturebox
    For Cnt = 1 To UBound(PicBits)
        PicBits(Cnt) = 255 - PicBits(Cnt)
    Next Cnt
End Sub

Puis ajoutes ces deux fonctions dans le module :

Public Function LoadPicture(ByRef pictBox As PictureBox)
    GetObject pictBox.Image, Len(PicInfo), PicInfo
    BytesPerLine = (PicInfo.bmWidth * 3 + 3) And &HFFFFFFFC
    ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight * 3) As Byte
    GetBitmapBits pictBox.Image, UBound(PicBits), PicBits(1)
End Function

Public Function RefreshPicture(ByRef pictBox As PictureBox)
    SetBitmapBits pictBox.Image, UBound(PicBits), PicBits(1)
    pictBox.Refresh
End Function

Ensuite dans le form Menu_FX ajoutes ceci à la fin de la procédure Form_Load :

image32.LoadPicture f.p

Dans ce même form remplaces la procédure menueffect_click par celle-ci :

Private Sub menueffect_Click(Index As Integer)
On Error Resume Next
    Dim tps1 As SYSTEMTIME
    Dim tps2 As SYSTEMTIME

undo.u(u).Picture = f.p.Image
u = u + 1
If u > 5 Then
u = 5
undo.u(0).Picture = undo.u(1).Image
undo.u(1).Picture = undo.u(2).Image
undo.u(2).Picture = undo.u(3).Image
undo.u(3).Picture = undo.u(4).Image
undo.u(4).Picture = undo.u(5).Image
End If

GetSystemTime tps1
Select Case Index
Case 0 'invert
Call Invert
Call image32.RefreshPicture(f.p)
Case 1 'XNoise
Call Blur2
Case 2 'Mosaic
val1.Show
Case 3 'blur
val2.Show
Case 4 'gray
GrayScale f.p
Case 5 'L+
Lighten 15, f.p
Case 6 'L-
Darken 15, f.p
Case 7 'STraT
StraT 5, f.p
Case 8 'T°c
Thermique f.p
Case 9 'Aqua-R
Aquarelle f.p, 5
Case 10 'Photo19
Photo f.p
Case 11 'RGBFX
FX f.p
Case 12 'Xblack
XBlack f.p
Case 13 'H2O
H2O f.p
Case 14 'photocop
photocop f.p
Case 15 'comic
BD f.p, 1, 10
Case 16
findRep.Show
Case 17
flash f.p, 1, 10
Case 18
val3.Show
Case 19
Noise f.p, 500
Case 20
Flip_Horizontal f.p
Case 21
Form2.Picture1.Picture = f.p.Image
SavePicture Form2.Picture1, "c:\windows\FXpaper.bmp"
Call SystemParametersInfo(20, 1, "c:\windows\FXpaper.bmp", 1)
End Select
'f.p.Visible = True
GetSystemTime tps2
Dim reste As Long
reste = ((tps2.wSecond - tps1.wSecond) * 1000) + (tps2.wMilliseconds - tps1.wMilliseconds)
MsgBox reste & " millisecondes"

f.p.Refresh

undo.u(u).Picture = f.p.Image
undoE.Enabled = True
End Sub

Voilà donc comment booster ton systéme et diviser le temps de traitement de plus de 5 Fois !...

Maintenant mon explication finie, je vais vraiment critiquer ta source :
-> Interface mal faite, fonctions de dessins mal gérées, code pas optimisé, peu de paramétres sur les filtres

Quand à tes critiques sur le Visual Basic, je te répondrais ainsi qu'à tous ceux qui pensent la même chose que toi, le visual basic n'est certes pas un language natif, cependant la lenteur de vos algorithmes c'est à vous qu'il faut vous la reprocher.

Faudrais pas oublier que le VB est compilé et que IF sera toujour écrit comme un jmp en ASM que ce soit du VB ou du C++.

signaler à un administrateur
Commentaire de BlackWizzard le 29/04/2004 16:14:34 administrateur CS

lol
merci de ce long commentaire, c tres instructif :)
ce code a 3 ans deja!
depuis je traite en memoire ce genre de donnée, mais je ne compte pas updater le code, je ne fait plus de vb...manque de tps, et surtout je prefere les langages plus structurés; action script, java...

mais si qqun vx updater pour poster sous son nom, c pas un prob ;)

signaler à un administrateur
Commentaire de aKheNathOn le 29/04/2004 17:09:11

Moi je l'aime bien cegenre de soft, je vise pas Adobe, mais bon, je vais surement le refaire... rien que pour continuer l'optimisation j'ai refais ta fonction d'effet de bruit :

Public Sub Blur2(ByVal Taux As Integer)
  Dim cnt As Long
  Dim x As Long
  Dim y As Long
  Dim maxp As Long
    
    maxp = UBound(PicBits)

    For cnt = 1 To maxp Step 3
        x = cnt + CInt(Rnd * Taux)
        y = x + (CInt(Rnd * Taux) * BytesPerLine)
        If y > maxp - 3 Then y = maxp - 3
        PicBits(cnt) = PicBits(y)
        PicBits(cnt + 1) = PicBits(y + 1)
        PicBits(cnt + 2) = PicBits(y + 2)
    Next cnt


End Sub

Je suis passé de 12,5 Secondes d'execution à 550 Millisec, et le tout en mode execution sous VB autant dire qu'en compilé ce sera instantané.

Vivement les vacances d'été, je sent que je vais m'amuser :)

signaler à un administrateur
Commentaire de BlackWizzard le 29/04/2004 17:23:37 administrateur CS

cool!
suis content que qqun reprenne le projet :D
tient moi au courrant!

signaler à un administrateur
Commentaire de DARKSIDIOUS le 12/11/2004 22:07:08 administrateur CS

Je sais, j'arrive bien après la bataille, mais voilà : j'ai fais une classe de gestion d'image se basant sur les fonctions de l'API Windows GetDIBits et SetDIBits qui permettent de gagner environ 30x plus de temps que les classiques GetPixel/SetPixel. Je te suggère donc d'utiliser ma source pour augmenter la vitesse de traitement car c'est vrai que c'est assez lent quand même.  Dommage que je n'ai pas le temps de prendre la relève de ce soft.

Excellent soft, dommage qu'il soit aussi lent pour certains filtres !

Tu pourrais y gagner pas mal de temps également en mettant des DoEvents dans tes boucles !

8/10

DarK Sidious

signaler à un administrateur
Commentaire de BlackWizzard le 12/11/2004 22:40:40 administrateur CS

2001 la date de la source, j'ai commencé la prog et l'info mi-2000, du coup j'avais pas enormement de connaissance ni d'experience a l'epoque...
Comme je l'ai deja dit, si je devait le refaire, j'utiliserai le traitement en memoire, voir je reprogrammerai le soft en le basant sur des dll codé en asm, maintenant que j'ai la connaisance pour le faire, histoire de vraiment utiliser de maniere optimum la puissance du cpu... mais j'ai d'autres choses a faire plus utiles, moins utopique que de concurrencer photoshop ;)
La source est là, les algo sont simple a dechiffrer, si qqun vx reprogrammer le soft il n'y a aucun probleme!
Je serais heureux de savoir que mon code ou mes algo peuvent etre utiles...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Objet package [ par philconcept ] Bonjour, J'ai pour but de faire apparaitre une image dans une feuille. J'y suis presque arrivé, cepandant, j'ai un petit soucis. Je tape la ref d aide code source pour mon projet [ par safari2 ] bonjour  à tous j'aimerais mettre sur pied une application de gestion des stocks et de reapprovisionnement càd que le logiciel  doit me signaler à cha retouche photo [ par sophievic ] bjr, pouvez vous me dire comment je peux faire pour retoucher une photo autant au niveau des yeux que des défauts de peau? Je suis novice en la matièr logiciel ENCOMBREMENT COUDE 3D [ par frestenor ] salut a tous voila je vient d'intaler le petit log de calcul d'un encombrement de coude mais une foie instaler je ne le retrouve pasje l'ai telecharge [déplacé VB => TS] logiciel non valide [ par teknicolor ] salut je ne m'y connais pas du tout en ordi et en fait un ami m'a mis la version vista (pyratée) sur mon ordi et ça rame trop et en + windows me dit q detection ecran [ par alainxp ] salut à tous , j aurais voulu savoir comment faire pour détecter si : j ai un logiciel et sur ce logiciel je voudrais prendre une partie de cette fene temps d'inactivité d'un logiciel [ par agbebe ] bonjour a tous,je travail avec vb6 et j'aimerais désactiver le menu de mon application après une période d'inactivité de 30mn par exemple.mais comment VB.Net FolderBrowswerDialog pour appareil photo [ par MagDix ] Bonjour à tous Je veux utiliser un FolderBrowserDialog afin de sélectionner mon apopareil photo numérique Tout est OK mais le bug c'est que je ne vb et matlab [ par satauf ] je travail sur matlab et visual basic, et je commence de réaliser un logiciel de modélisation et calcul des vibrations pour les rails de chemin de fer logiciel visual basic [ par nadiacompte ] urgentsalut tout le mondej'ai besoin de visaul basic pour réaliser un logiciel que mon prof m'a demandé veuillez me donner un lien pour le telecharger


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.