Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.java > #1827
| From | Yliur <yliur@free.fr> |
|---|---|
| Newsgroups | fr.comp.lang.java |
| Subject | Re: Programme Java Transformation Image PPM |
| Date | 2021-06-13 04:12 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <sa40iu$55g$1@dont-email.me> (permalink) |
| References | <1Pydnc5QqKrSkFj9nZ2dnUU7983NnZ2d@giganews.com> |
Bonjour
Le Sat, 12 Jun 2021 14:38:55 -0500, henryd a écrit :
> Bonjour à tous,
>
> Dans le cadre d'un projet, je dois développer un programme Java qui
> reçoit en entrée une image au format PPM, la lit (stocke en mémoire la
> valeur des pixels) puis fait des opérations sur cette image : modifie la
> couleur (foncer,
> éclaircir, converti en noir et blanc), affiche la taille de l'image
> (pixels largeur x pixels longueur), découpe/ agrandi l'image... Le code
> est soumis à quelques contraintes : utiliser les listes chainées
> (natives) pour stocker les données en mémoire, gérer les exceptions,
> utilisation de la récursivité, d'une classe interface.
> Je suis débutant en Java et j'ai commencé à développer une première
> version du programme que vous trouverez avec la documentation sur mon
> Github dans le repository suivant :
> [url]https://github.com/hdossot/programme_image_java[/url] Cette
> première version permet de charger l'image en mémoire et commencer à
> lire les pixels.
> Là où ça se complexifie pour moi c'est pour écrire la structure avec les
> différentes classes du programme, les fonctions de chaque classe, les
> opérations dans les fonctions...
> Si quelqu'un à déjà eu ce type de projet à faire ou s'il peut m'aider à
> avancer ce serait super :)
>
> Je reste à disposition si vous avez besoin d'information complémentaire,
>
> Bien cordialement,
> Henry
Un détail sur la convention java : les noms des classes commencent par
une majuscule en général. Attention à renommer les fichiers qui les
contiennent de la même manière dans ce cas.
Au contraire, les noms des paquetages commencent par une minuscule.
Il est rapidement plus clair de ne pas mettre toutes les classes dans le
même fichier : elles seraient mieux chacune dans un fichier à leur nom.
Tu peux avoir une classe regroupant les traitements et la fonction main,
qui permet de lancer le programme (si ton programme grossit, tu
préféreras peut-être mettre ce qui concerne son initialisation dans une
classe distincte, mais ce n'est pas urgent).
Ta liste de classes ressemblerait à ça :
- Image (les données d'une image)
- Segment (les données d'un segment)
- TraitementsImages (les traitements et la fonction main())
Place chaque traitement (chargement, sauvegarde, ...) dans une fonction
de la classe de traitements, ça te permettra de bien les distinguer et de
les appeler ensuite pour réaliser des traitements plus complexes (par
exemple charger une image, appliquer un traitement, puis sauvegarder
l'image).
Tu n'es pas obligé de créer tout de suite les fonctions qui ne servent à
rien, comme changeColor et autres dans Segment. D'autant que la dimension
ne devrait pas se trouver là à mon avis.
Si on lit la consigne, la partie structure de données dit ça : « On
définit un segment comme une séquence de points consécutifs de même
couleur. Pour coder un segment, il faut les trois entiers de la couleurs
plus le nombre de points. On vous demande de représenter une image comme
un enregistrement contenant la largeur et la hauteur de l’image, l’entier
de la quatrième ligne (valeur maximale d’une couleur) et la liste chaînee
de segments. »
Je propose de laisser de côté pour l'instant la liste chaînée et de
stocker ça dans un tableau extensible de type ArrayList. S'il faut coder
une liste chaînée, mieux vaut faire ça dans un second temps (sauf si tu
es à l'aise avec cette structure).
Donc si on lit bien le paragraphe, on a deux concepts/classes : l'image
et le segment. Un segment est une suite de points de la même couleur,
défini par les valeurs des couleurs et le nombre de points. Ce sont ces
informations que devraient constituer les attributs de la classe Segment.
Pareil pour l'image : elle est constituée d'une largeur, une hauteur, la
valeur maximale d'une couleur, une liste de segments (c'est là qu'on peut
utiliser le type ArrayList<Segment>, si on veut éviter de se préoccuper
de la liste chaînée pour l'instant). Ces informations sont les attributs
de la classe Image.
Une fois qu'on a ces deux classes, on peut créer les deux fonctions qui
servent à charger une image et la sauvegarder. Avec ces signatures dans
la classe TraitementsImages :
public static Image chargerImage (String chemFicImage)
public static void sauvegarderImage (Image image, String chemFicImage)
Pour ce qui concerne la fonction de chargement :
Le plus difficile consiste à créer les segments, c'est-à-dire à compter
les points successifs d'une même couleur, en s'arrêtant quand la couleur
change ou quand la fin du fichier est atteinte. Il faut donc un compteur
et une information sur la dernière couleur rencontrée, pour détecter les
changements. Quand la fin d'un segment est détectée (ou que la fin du
fichier survient), un objet Segment peut être créé avec les informations
accumulées puis stocké dans la liste de segments (de type ArrayList pour
l'instant, dans mon exemple). L'image peut être créée à la fin, avec la
liste de segments et les autres données qui la définissent (hauteur et
largeur, nombre maximal de couleurs).
J'arrête là pour l'instant, je pense que ça fait déjà pas mal de blabla
et de travail ? :)
Yliur
Back to fr.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Programme Java Transformation Image PPM henryd <nospam_henry.dossot@gmail.com.invalid> - 2021-06-12 14:38 -0500
Re: Programme Java Transformation Image PPM Yliur <yliur@free.fr> - 2021-06-13 04:12 +0000
Re: Programme Java Transformation Image PPM henryd <nospam_henry.dossot@gmail.com.invalid> - 2021-06-13 07:43 -0500
Re: Programme Java Transformation Image PPM Yliur <yliur@free.fr> - 2021-06-13 18:37 +0000
Re: Programme Java Transformation Image PPM Yliur <yliur@free.fr> - 2021-06-19 09:22 +0000
Re: Programme Java Transformation Image PPM Yliur <yliur@free.fr> - 2021-06-21 01:19 +0000
Re: Programme Java Transformation Image PPM yamo' <yamo@beurdin.invalid> - 2021-06-28 08:16 +0200
Re: Programme Java Transformation Image PPM Yliur <yliur@free.fr> - 2021-06-30 17:26 +0000
csiph-web