CONTRÔLE POUR EDITER IMAGES BITMAP (1, 4, 8 ET 24 BITS )

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 12 févr. 2005 à 07:19
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009 - 14 févr. 2005 à 11:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29436-controle-pour-editer-images-bitmap-1-4-8-et-24-bits

cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
14 févr. 2005 à 11:54
tu ne compresses que la partie données. Il y a des aussi des codes pour indiquer fin de ligne, fin de fichier... Je ne sais pas si j'ai répondu à ta question, pour des scpécifications plus poussées, va faire un petit tour sur google :)

@+ Neria
Avigeil Messages postés 5 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 11 mars 2008
14 févr. 2005 à 10:29
Et comment tu compresse tes fichier de cette façon?
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
14 févr. 2005 à 08:30
Le débat fait rage :)

Juste une petite explication du RLE. Le Run Lenght Encoding est une méthode de compression basique pour les fichiers BMP. Il s'effectue sur les mode 4 et 8 bits.
Le principe est très simple (exemple) :
FF FF FF FF --> 04 FF
Il y a de la doc à peu près partout sur le le net. Personnellement j'avais fait un programme capable de lire et enregistrer tous les formats du BMP, mais je ne l'ai pas fini (il est quand même bien avancé), car c'est un vraie casse tête !!! Donc si tu veut un chti exemple envoie moi un message !!!

@+ Neria
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 févr. 2005 à 21:36
Et non, et c'est là le plus important : elle est aussi compliquée à utiliser que la tienne, tout en y gagnant beaucoup en rapidité (de l'ordre de 30 fois plus rapide) : il suffit de définir le PictureBox dans lequel tracé, puis d'utiliser GetPixel ou SetPixel (fonctions de la classe, et non les fonctions de l'API Windows) pour définir les couleurs, et enfin, appeler la fonction Refresh pour retracer l'image.

En gros, ca donne cà :

Dim oGestionImage As New CGestionImage

Set oGestionImage .PictureBox = Picture1
Let lCouleur = oGestionImage.GetPixel(0, 0)
Call oGestionImage.SetPixel(0, 0, vbRed)
Call oGestionImage.Refresh

Télécharge ma source, et regarde le programme d'exemple, tu verra vite que l'utilisation de la classe n'est pas plus compliquée que l'utilisation de ton contrôle ! Je n'essaye pas de faire des sources trop compliqués que personne ne comprends, mais bel et bien des sources qui permet à tout le monde de comprendre comment ca marche, et les intégrer facilement dans leurs programmes (mis à part mes 2 programmes complets que sont Horloge Système et ProgOtoP Icon Creator).

La différence entre ta source et la mienne niveau utilisateur : uniquement un appel à la fonction Refresh pour ma classe. Sinon, les opérations sont les même !

DarK Sidious
Avigeil Messages postés 5 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 11 mars 2008
13 févr. 2005 à 20:47
Je vien juste de lire ton descriptif et je vais te dire la différence entre ton projet et le miens:
Ta classe cherche a gagner du temps sur les traitement d'images. Rien qu'en lisant le descriptif je n'ai pas envie de telecharger le zip pour la simple et bonne raison que l'utilisation m'en parait trop compliquée. Moi je ne suis a la recherche que de la facilité d'utilisation et non a l'extra rapidité de mon code.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 févr. 2005 à 20:44
Je suis guère plus vieux que toi : je suis en troisième année de licence info, et on n'a pas appris grand chose en prog jusqu'à maintenant (et surtout pas de VB !).

Les dll activeX fonctionnent presque de la même façon que les usercontrol, à ceci près qu'elles ne possède pas de ReadProperty et WriteProperty de base (mais on peux les rendre persistable quand même !), et qu'elles ne possède pas de fenêtre par défaut (là aussi, il est possible d'en rajouter), du coup, elles sont bien moins lourdes que les contrôles ocx !

Pour la compression RLE, je ne connais pas, si neria peux nous en dire plus, ca m'interesse !

DarK Sidious
Avigeil Messages postés 5 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 11 mars 2008
13 févr. 2005 à 20:39
ok, désolé pour les fautes les erreurs mais je peux me justifier : ce control à été créé en l'espace de 3h40 par quelqu'un qui programme par loisir, qui a apprit la programmation seul ou quasiment ainsi que la construction des ocx. Je ne me suis pas encore interressé aux dll activex et n'en connais pas du tou le principe. Petite information supplémentaire : je ne suis qu'en terminale S.
Petite question : qu'est-ce que les compression RLE? je ne connais que 4 types de formats BMP : monochrome, 16 couleurs, 256 couleurs et 24 bits!
De plus ce control n'est qu'une ebauche ce qui ne fait pas de lui un projet parfait.
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
12 févr. 2005 à 07:58
C'est vrai qu'un petit exemple serait le bienvenue. En tout cas si tu souhaite t'attaquer aux autres formats que 24 bits, je te souhaite beaucoup de courage !!! Surtout si tu doit aussi gérer les compression RLE.
Enfin prend en compte les remarques de Dark Sidious et continue ton projet :)

@+ Neria
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 févr. 2005 à 07:19
Pourquoi diable passer par un contrôle ocx pour ce genre de chose ??? Pour gaspiller de la mémoire ainsi que de la rapidité ? Tu aurais pû te contenter de faire une dll ActiveX qui aurait été plus rapide pour faire la même chose !

Autre chose : va voir ma source nommée DKS_Gestion_Image, tu verra qu'il y a bien plus rapide que SetPixel et GetPixel pour accèder aux pixels d'une image tout en gardant la même convivialité que ton contrôle !

Sinon, dommage que la source soit si peu commentée, qu'il n'y ai pas d'exemple fournit avec, qu'il y ai des fautes d'orthographe (on dit largeur et non largeure !), que tu passe par des variables globales (ca fait toujours sale dans un ocx !), que tu n'utilise pas les WriteProperty et ReadProperty (c'est quand même le principal intérêt des contrôles ocx... si ce n'est le seul...). Bref, pas mal de petite remarques pour faire avancer les choses.

DarK Sidious
Rejoignez-nous