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 !

LOADER BMP + TRAITEMENT


Information sur la source

Catégorie :Divers Classé sous : loader, bitmap, bmp, filtrage Niveau : Initié Date de création : 09/08/2005 Date de mise à jour : 11/07/2008 11:40:48 Vu / téléchargé: 13 361 / 3 552

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

Cette source permettra -j'espère- à bon nombre d'entre-vous de se familiariser avec le format BMP et avec le traitement d'images.

Cette classe permet d'ouvrir une image BMP et de la sauver sur le disque. Pour ce faire, elle utilise une matrice de pixels au format RGB. Elle peut également appliquer sur cette image plusieurs traitements relativement simples (opérations logiques avec une autre image, filtrage,...)

Elle permet également de faire différents traitement sur l'image: changement d'espace de couleurs, opérations logiques, détection de contours,...

Pour plus de détails, se référer au fichier bmp.h (commentaires en français)

NB: des images sont fournies à titre d'exemple
 

Conclusion

La classe gère les formats suivants:
- 4 bits par pixel
- 8 bits par pixel
- 16 bits par pixel (sans compression)
- 24 bits par pixel
- 32 bits par pixel (sans compression)

Problème avec le format 1 bit par pixel :(
De plus, la sauvegarde de l'image ne se fait que dans le format d'origine.

Des mises à jour seront faites. Affaire à suivre...
 

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

Historique

11 août 2005 18:29:00 :
- Modification du chargement: FILE * remplacé par std::ifstream - Ajout des formats 8,16 et 32 bits
12 août 2005 16:45:38 :
- Ajout des fonctions d'accès aux membres de la classe - Ajout de la fonction Copy: permet de copier une région d'une bitmap vers une autre...en prenant en compte le clipping - Découverte d'un bug et correction de celui-ci aussitôt: le scanline était inversé :) (origine en bas à gauche) - Peinture sur code
07 septembre 2005 16:10:24 :
Ajout d'opérateurs simples + changement d'espace de couleurs (RGB, YUV, niveaux de gris) + ajout de la convolution + correction d'un bug dans le cas d'une ré-utilisation de l'image après un enregistrement
09 septembre 2005 17:33:38 :
Ajout de la détection de contour et du seuillage + ajout de protection + ajout d'opérateurs pratiques
24 novembre 2005 11:06:04 :
Ajout de mots-clés
21 février 2008 14:27:56 :
Suppression de code mort
11 juillet 2008 11:38:37 :
- Correction de la gestion des images 32 bits (matrice RBGA plutôt que RGB) - Petites optimisations du code (suppression de code mort)
11 juillet 2008 11:40:48 :
Correction dans la gestion des images 32 bits (matrice RGBA plutôt que RGB) et petites optimisations du code (suppression de code mort)

Commentaires et avis

signaler à un administrateur
Commentaire de Pistol_Pete le 27/09/2006 20:05:21

Salut
J'aime bien ta classe bitmap surtout les fonctions AND OR XOR sur les images. Pour faire de la morphologie, ces fonctions sont extrèmement intéressante...
Sinon tu pourrais amméliorer tes filtres. Sobel et prewitt sont des filtres monodirectionnels. Il faudrait pouvoir les appliquer dans les 8 directions de l'image. Cela amméliore grandement la detection des contours lorsque l'on additionne les 8 images.

signaler à un administrateur
Commentaire de buno le 27/09/2006 20:36:38

Ok, je vais penser à les améliorer et à rajouter quelques traitements.
Voire même, je pourrais faire une appli graphique!
Je vais essayer de trouver le temps...

signaler à un administrateur
Commentaire de skone007 le 06/02/2008 13:30:03

J'ai un problème quand on lit misc.cpp qui est l'instance d'un classe CHistogramme le fichier inclus Histogramme.h j'ai d'abord cru à une erreur et j'ai voulu mettre #include "misc.h" mais dans misc.h il n'y a aucune class CHistogramme...

signaler à un administrateur
Commentaire de buno le 07/02/2008 10:13:08

Tiens effectivement...tu as raison. Il a fallu 2 ans quand même avant que quelqu'un le remarque :)
Je m'étais promis de faire un upgrade un jour...je vais devoir me presser :P

NB: si tu en as besoin (envoie-moi un MP), je peux t'envoyer une version qui fonctionne.

signaler à un administrateur
Commentaire de buno le 21/02/2008 14:32:38

Bonjour à tous,
Je viens de mettre à jour l'archive suite à la (bonne) remarque de Skone007.

Promis, j'essaie de trouver le temps d'y ajouter des fonctionnalités :P

signaler à un administrateur
Commentaire de codures le 25/05/2008 11:55:26

Salut,
Je viens 2 télécharcher le zip.
E bah "histogram.h" n'est tj pas la.

signaler à un administrateur
Commentaire de skone007 le 25/05/2008 12:13:56

en effet

signaler à un administrateur
Commentaire de buno le 25/05/2008 12:17:57

Non, mais le projet n'en a pas besoin. Pour en être sûr, tu peux supprimer le fichier misc.cpp (je pensais d'ailleurs l'avoir fait...).
Normalement, tu ne dois pas avoir de problème, ni à la compilation, ni à l'exécution.

signaler à un administrateur
Commentaire de skone007 le 25/05/2008 12:56:32

Mais l'histogramme peut être utiles pour appliquer des filtres.

signaler à un administrateur
Commentaire de buno le 25/05/2008 14:53:56

Bien sûr. Mais ma source ne l'implémente pas pour l'instant. Après, livre à toi de l'ajouter...

signaler à un administrateur
Commentaire de skone007 le 25/05/2008 16:25:11

plutôt libre à moi de me livrer à l'ajout de cette fonction

signaler à un administrateur
Commentaire de youp_youp_ le 04/07/2008 11:00:43

Je crois bien que la transformation en niveau de gris ne marche pas avec ton programme (pour les 32bits). Je soupçonnerai bien une erreur au niveau de la palette.

signaler à un administrateur
Commentaire de buno le 04/07/2008 14:19:57

Effectivement, bug reproduit. Mince!
Cela ne vient pas de la palette car en 32 bits, tu n'en as pas.
Le problème est plus général en fait: si tu ouvres une 32 bits et que tu la sauve dans la foulée, y'a un souci.
J'investigue et je te tiens au courant.
@+
Buno.

signaler à un administrateur
Commentaire de youp_youp_ le 04/07/2008 14:29:31

Merci beaucoup pour ta réactivité (3h pour me répondre alors que le forum n'a pas changé depuis 2 mois, chapeau)

signaler à un administrateur
Commentaire de youp_youp_ le 11/07/2008 10:29:04

Tu avances dans ton investigation?

signaler à un administrateur
Commentaire de buno le 11/07/2008 11:01:10

Oups....
Oui, pardon, j'ai trouvé le problème. Je pensais juste faire 2 ou 3 modifs supplémentaires, en passant.
Je postes la mise à jour dans l'après-midi (si j'oublies pas :P)

signaler à un administrateur
Commentaire de youp_youp_ le 11/07/2008 11:04:37

Ok pas de soucis. "Par avance merci" (si t'oublies pas le post) :)

signaler à un administrateur
Commentaire de shintaa le 03/09/2008 21:04:01

Coucou,

Après une journée entière de débug il s'avère que l'image bmp1.bmp est bugué. En effet width * height / 8 est différent de ImageSize (il est plus grand). Ca pose un problème car l'image n'est pas complète. Avec une image créer à partir de paint ca marche. Si les explications ne sont pas claires préviens moi.

Voila il suffit donc juste de changer l'image :p

signaler à un administrateur
Commentaire de shintaa le 26/09/2008 10:10:09

Il y a un autre bug ds ton loader bmp. Lorsque tu récupère les données de l'image dans tes différents load, tu commences à l'adresse 0x36 + nbPaletteEntry*4. Mais le début des données ne correspond pas toujours à la fin de la palette. En fait il faut utiliser le champs offset pour se positionner pile devant les données. Ensuite dans le save soit il faut te positionner au meme offset pour écrire l'image, soit il faut modifier le champ offset (0x36 + nbPaletteEntry*4) pour écrire la donnée juste après la palette. L'offset est différent selon qu'on crée un bmp avec paint ou photoshop.

signaler à un administrateur
Commentaire de buno le 26/09/2008 11:08:34

Hum...je crois me rappeler qu'il y a effectivement une spécificité pour les BMP écrite par Photoshop.
Je vais donc me relancer dans le code.
Merci de l'info!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

allegro+probleme de creation de buffer dans une fonction [ par xboxut ] salut je suis en train de monter mon moteur 2D avec allegro et j ai un bleme au niveau d une fonction.void buffscroll(BITMAP *bmp) //la c la fonction chargement dynamique d'image (bitmap ?) [ par Gendal67 ] Bonsoir,J'aimerai savoir si une application peut charger autre chose qu'une image bmp comme une image jpg....genre comme :BMP BITMAP DISCARDABLE "lol. Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox . [ par Dragoon ] Bonjour à tous,Je ne suis pas un spécialiste du C++ et des MFC et je souhaiterais comprendre ce qui ne va pas dans mon programme.Je voudrais que celui Convertion d'un bitmap 8 bits en un bitmal 24 bits [ par SauCisS ] Bonjour, J'ai parcouru ce forum pour chercher ma réponse, mais sans succès. Alors voici mon problème : Comment à partir d'une Redimensionnement image Borland C++ [ par jfouquet ] Bonjour, Je travaille actuellement sous Borland C++ 5. Je suis amené à afficher une image (jpeg,bmp,ico…) dans un TImage bon ça bitmap miniature = icon ou bitmap (comme explorateur win ) [ par gege1024 ] je cherche a faire des bitmap miniature comme pour l'explorateur windows.j'ai un dial où je selectionne des fichiers(uniquement des bmp) , j Modification de fichier BMP [ par titio ] Bonjour,Je souhaite afficher des images bmp, tout en ayant la possibilité de modifier ce fichier. Pour cela, je le charge en memoire, et souhaite Mes bitmap se barrent [ par oceax ] Salut !Voila j'ai fais une boite de dialogue en Win32 et j'ai inséré une bmp à l'aide de LoadBitmap() et pis DrawState(). Ma bitmap s'a Hwnd [ par T_Mehdi ] salut a tous .bon j'ai realiser une fonction qui permet douvrir des fichier bmp et les affichier sur un hwnd preci.le prob est que quand je reduit ou problème de chargement de bitmap [ par Batman60 ] bonjour y a pas moyen de charger des bitmaps avec  la fonction :gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight,   


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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 : 1,170 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é.