Java: éditer le manifest dans le .jar
onzeaout
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous!
Je travaille sur un projet d'analyses d'images avec Eclipse.
J'ai un programme JAVA me servant à extraire les classes de couleurs et à compter les pixels les contenant d'une image:
[CODE=JAVA]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);
}
}[/CODE]
Lors de l'exécution de ce programme, j'ai ce message:
[QUOTE]javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at color.colorcounter.main(colorcounter.java:18)[/QUOTE]
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):
[QUOTE]Manifest-Version 1.0
Created by: Tonio
Main-Class: colorcounter
[/QUOTE]
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:
[IMG]http://www.imagup.info/images/06/1191773639_colorjava.jpg[/IMG]
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 :mouarf:)
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 ici 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
Je travaille sur un projet d'analyses d'images avec Eclipse.
J'ai un programme JAVA me servant à extraire les classes de couleurs et à compter les pixels les contenant d'une image:
[CODE=JAVA]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);
}
}[/CODE]
Lors de l'exécution de ce programme, j'ai ce message:
[QUOTE]javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at color.colorcounter.main(colorcounter.java:18)[/QUOTE]
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):
[QUOTE]Manifest-Version 1.0
Created by: Tonio
Main-Class: colorcounter
[/QUOTE]
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:
[IMG]http://www.imagup.info/images/06/1191773639_colorjava.jpg[/IMG]
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 :mouarf:)
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 ici 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
A voir également:
- Java: éditer le manifest dans le .jar
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
2 réponses
j'ai un pb avec java
le problem comment stocker les valeur rgb d'une image dans un tableau 3 dimension?
et a la fin afficher ce tableau dans un repère (x,y,z) x reprèsente R et y represente G et z reprèsente B?
s.v.b.si vous avez un solution please help me pour realiser ma projet de fin d'etude .merci en tous les cas
le problem comment stocker les valeur rgb d'une image dans un tableau 3 dimension?
et a la fin afficher ce tableau dans un repère (x,y,z) x reprèsente R et y represente G et z reprèsente B?
s.v.b.si vous avez un solution please help me pour realiser ma projet de fin d'etude .merci en tous les cas