Bonjour à tous!
Je travaille sur un projet d'analyses d'images avec Eclipse.
J'ai un programme JAVA que Pseudocode m'a proposé et me servant à extraire les classes de couleurs et à compter les pixels les contenant d'une image:
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package color;
 
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
import javax.imageio.ImageIO;
 
public class colorcounter{
 
	public static void main(String[] args) {
 
		// lecture de l'image
		BufferedImage image = null; 
		try {
			image = ImageIO.read(new File("26.jpg"));
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}
 
		// Map (rgb)=>count
		Map<Integer, Integer> rgbmapcount = new HashMap<Integer, Integer>();
 
		// parcours des pixels de l'image, et creation/mise a jour de la Map
		for(int y=0;y<image.getHeight();y++) {
			for(int x=0;x<image.getWidth();x++) {
				// valeur [a]rgb, codé sur un entier (4 octets)
				int rgb = image.getRGB(x,y);
 
				// recherche dans la map
				if (!rgbmapcount.containsKey(rgb)) {
					rgbmapcount.put(rgb, 1); // n'existe pas => creation
				} else {
					int previouscount = rgbmapcount.get(rgb);
					rgbmapcount.put(rgb, previouscount+1); // n'existe => mise a jour
				}
			}
		}
 
		// Combien de couleurs apparaissent plus de 10 fois ?
		int distinctcolor=0;
		int pixelcount=0;
		for(int rgb:rgbmapcount.keySet()) {
			int rgbcount = rgbmapcount.get(rgb);
			if (rgbcount<10) continue;
			distinctcolor++;
			pixelcount+=rgbcount;
		}
		System.out.println("nombre de couleurs distinctes: "+distinctcolor);
		System.out.println("nombre de pixels: "+pixelcount);
 
		// Richesse de la palette
		double U =  (double)distinctcolor / pixelcount;
		System.out.println("Richesse de la palette: "+U);
	}
 
}
Lors de l'exécution de ce programme, j'ai ce message:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at color.colorcounter.main(colorcounter.java:18)
J'ai donc pensé qu'il fallait créer dans le bin du Jdk un fichier .jar contenant la classe concernée et les images à analyser, ce que j'ai fait. (image.jar)
Mais il me faut aussi pour rendre cette archive exécutable modifier le Manifest
(créé par défaut lors de la création de l'archive .jar) pour y introduire le nom de la class concerné.
MANIFEST (.txt):
Manifest-Version 1.0

Created by: Tonio

Main-Class: colorcounter
avec le saut de page à la dernière ligne.
Je tape donc en ligne de cde: jar cvfm image.jar MANIFEST.MF colorcounter.class 26.jpg

J'obtient un message:

J'ai cherché partout sur le net, dans les TUTO, avec Mr Google et surtout ici même mais sans rien trouver de vraiment explicite.
Les fichiers Manifest ne sont manifestement pas très intéressants (je sais elle était facile )
Aie-je fait une erreur dans l'intitulé? manifest.mf ou manifest.txt ou ????
Ou alors me gourre-je ailleurs??
Faut-il dans le manifeste à la ligne Main-Class préciser le package?
Dois-je aussi préciser le Class-Path?
M'enfin, si déjà il ne reconnait pas mon manifeste....
Merci pour votre aide, si j'arrive (enfin!) à éxecuter mon code, je ferais un ajout à la FAQ pour expliquer la méthode en détail, car j'ai remarqué en surfant ici et là que nombre de débutants rament sur cette question de l'utilisation des images avec Eclipse.....

Amicalement