IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Création d'une classe image en C#


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut Création d'une classe image en C#
    Bonjour à tous,

    Je suis actuellement en train d'étudier le C# et je suis intéressé par sons côté simple quant à la création d'interface.

    J'aimerai coder plusieurs librairies pour m'entraîner, et notamment une librairie pouvant manipuler des images... M'affranchir des classes que propose .NET est pour moi le mot d'ordre, et ainsi créer une classe Image permettant de lire un fichier image bmp, tiff, jpg ou autre, et créer mes propres méthodes !

    Tout cela dans le but d'en apprendre plus sur le langage C# et les manipulations d'image en générales -je suis en dernière année d'école spécialisé Traitement, et on nous apprend plein de choses sauf à créer notre propre librairie, ce que j'aimerai faire haha.

    Bref, mon objectif est d'en apprendre plus sur la manipulation d'image.

    Mais je ne sais pas par où commencer ! Quelques bonnes âmes pour me conseiller ? Tous vos commentaires sont les bienvenues, tant qu'il m'aide à créer ma classe image.

    Merci d'avance,


    PS : je souhaite faire un article sur le sujet une fois que j'aurais abouti à quelque chose de fonctionnelle !
    PS bis : étant mon premier post sur ce site, n'hésitez pas à me dire ce que je dois corriger

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Bonjour et bienvenue

    Mise à part si tu as beaucoup de temps à perdre, ou alors une idée très précise derrière la tête, je pense que l'idée de créer une classe permettant de manipuler des images en C# n'est pas l'idée de l'année.
    En effet, C# est très rapide, oui. Mais il reste assez lourd, surtout pour du traitement de masse de données en mémoire : donc pour manipuler des volumes conséquents d'octets représentant une image, je ne suis pas certain que ce soit le langage le plus adapté. Ton projet serait en C++ managed (avec 90% du code en non managed, unsafe, voir même des bouts d'ASM pour les parties critiques, je dis pas. Mais C#, je doute).
    D'autant que les classes de base sont assez légères et plutôt bien faites.
    Rien que pour implémenter l'encodage/décodage dans différents format, c'est des projets en soit, et rien que là, le C# va montrer ses limites par rapport à du code vraiment natif.

    C'est mon avis sur la partie "technique" du projet.

    Après, pour l'initiative, je ne peux que t'encourager (bon, je sais, c'est mal parti )

    Quant aux conseils pour bien débuter, je pense que quelques détails supplémentaires sur le type de conseils attendus sera un plus.

    Dans les grandes lignes :
    - hériter le plus possible (des classes et interfaces de plus haut niveau qui exposent le plus de méthodes et propriétés possible, et des classes filles les plus spécialisées possibles, avec le moins de méthodes et propriétés spécifiques possibles)
    - refactoriser au maximum (implémenter au niveau le plus haut possible de l'héritage les méthodes, surtout les plus lourdes)
    - et si tu changes pas d'avis sur le contenu de ta librairie, un point d'honneur absolu sur les performances et les méthodes de contrôle de ces dernières => penser au multi-thread notamment, qui à l'encapsuler ensuite dans des méthodes globales synchrones (par exemple lecture sur le disque / décodage / rendu à l'écran dans 3 thread séparés, le tout encapsulé dans une unique méthode Load() )
    - faire simple : ne pas hésiter à découper le code en plusieurs sous-fonctions, de façon à avoir un code facilement lisible. Niveau performances, ça peut se ressentir dans les traitements les plus critiques, mais tu y gagneras tellement en temps de développement/test/debugage/évolution que ça en vaut vraiment la peine

    Bon courage
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    affranchir des classes que propose .NET est pour moi le mot d'ordre
    Pourquoi ?

    Je peux comprendre a la limite l'aspect pédagogique ,vouloir savoir comment ça tourne derrière, j'ai moi même écrit des bibliothèques (et non "librairie" , attention) qui existaient déjà mais c'était purement pédagogique.
    Mais si ce n'est pas pour ça alors , je te conseillerai de maîtriser d'abord la classe Image en C# , qui offre déjà pas mal de possibilités , et pour de nombreux formats.Il ne faut pas sans cesse réinventer la roue.

    Rien ne t'empêche qu'une fois cette classe maîtrisée , tu lui trouves des défauts et que tu écris une bibliothèque du tonnerre de dieu qui comble bon nombres de choses qui manquent.

    Image fait le strict minimum en même temps , tu vas vite faire le tour.

    Après comme l'a dit StringBuilder , ce n'est pas aussi fait pour ça le C#.Bien sûr ça fait largement le boulot mais si tu veux de la performance , c'est ailleurs qu'il faut chercher.

    D'ailleurs , vous n'apprenez pas MATLAB ou le C++ dans ton école pour ce genre de traitement ?

    Voici un petit début , même si c'est surtout du traitement tape a l'oeil : http://www.codeproject.com/Articles/...essing-using-C

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous,

    Je rejoins Romain dans le sens où, dans le cadre de la productivité, il est préférable d'utiliser les APIs existantes, c'est sûr. Après, j'ai bien compris qu'il s'agissait bien d'une démarche pédagogique...

    Cela dit, à propos de la classe Image dont parle Romain, il faut savoir qu'elle est basée sur GDI. Depuis le Framework 3.5, Microsoft a introduit WPF pour Windows Presentation Fondation qui propose notamment des méthodes de manipulations d'images plus évoluées. De plus, d'après des petits tests que j'ai fait, il me semble que la performance de traitement des images est meilleure que les classes basées sur GDI. J'ai fais à ce sujet un test avec un petit programme de rotation d'images et l'utilisation des fonctions d'images du WPF a donné de meilleurs résultats que celles de "System.Drawing".

    Alors j'ai bien dit "il me semble" car je n'ai pas fait un comparatif exhaustif à ce sujet...

    Regardez ici par exemple si vous voulez en savoir plus sur WPF et les images...

    [EDIT]...et aussi System.Windows.Imaging

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ph_Gr Voir le message
    Alors j'ai bien dit "il me semble" car je n'ai pas fait un comparatif exhaustif à ce sujet...
    A mon avis, si tu veux de la "vraie" performance, oublie GDI et WPF... Utilise DirectX : c'est la CG qui fera le boulot.

    Mais à nouveau, pas question de créer sa propre librairie...
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    A mon avis, si tu veux de la "vraie" performance, oublie GDI et WPF... Utilise DirectX : c'est la CG qui fera le boulot.

    Mais à nouveau, pas question de créer sa propre librairie...
    Bien sûr, c'est évident.
    Après, je parlais principalement d'une comparaison entre "System.Drawing" et "System.Windows.Imaging"... Mais c'est sûr qu'avec DirectX ce n'est pas comparable, bien évidemment.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour à tous,

    Après moult recherches et autres lectures, j'ai décidé de faire un mixte :
    - créer mon interface en csharp -bien plus simple et terriblement attirant haha.
    - créer les fonctions et autres classes en cpp -langage que je connais bien, et j'ai de très bonnes notions en codage pour le traitement d'image.
    - travailler sur la liaison entre les deux langages (importation, mais aussi le Cpp/CLI).

    Qu'en dites-vous messieurs ?

    Foxaltex

Discussions similaires

  1. [POO] création d'une classe de connexion
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 14/02/2008, 13h01
  2. Réponses: 3
    Dernier message: 06/05/2007, 20h46
  3. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 16h49
  4. Création d'une class contenant un TEdit (Débutant)
    Par Dereck07 dans le forum Delphi
    Réponses: 5
    Dernier message: 01/05/2007, 18h02
  5. [Debutant] Aide pour creer une classe image
    Par skwi6 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/10/2006, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo