bonjour à tous,
mon projet : comparait 2 dossiers, un dossier de référence contenant les images de référence et 1 dossier à tester contenant les images à tester.
le nombre d'images dans les dossier doit etre le meme. 1 image de ref pour 1 image de test. puis faire un petit rapport en pdf.
il faudra répertorier les fichiers images dans l'ordre alphabétique.
pour chaque image ref et test vérifié qu'elles ont les meme proportion LxH.
ensuite procédé à la vérification pixel par pixel.
le probleme est qu'il y aura des zones dans les images qu'il ne faut pas prendre en compte, ex: l'heure la date le niveau de batterie.
les images sont des screenshot de pda. mais tous est sur pc donc pas de souci.
alors je voudrai savoir comment faire pour ignorer des zones sur l'image ?
j'avais l'idée de mettre les coordonnées à ignoré dans un fichier txt ex:
X1,Y1:X2,Y2 // défini un rectangle à ignorer.
mais je ne sais pas trop comment faire pour utiliser cela.
Pour le moment je n'ai pas de code, je veux d'abord avoir un algo clair que je pourrais suivre.
sinon pour la comparaison d'image j'ai trouver sur le forum, et pareil pour le coté pdf, et cela fonctionne bien.
code de comparaison de "allstar" ici le sujet de allstar
Code : 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 package untitled1; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import java.util.*; public class Untitled1 { public static void main(String[] args) { Vector original = testImg("c:\\gif\\14.gif"); Vector clonde = testImg("c:\\gif\\15.gif"); System.out.println(original.equals(clonde)); } public static Vector testImg(String file) { Vector all = new Vector(); try { BufferedImage im = ImageIO.read(new FileInputStream(file)); int w = im.getWidth(null); int h = im.getHeight(null); int[] rgbs = new int[w * h]; int x = 0; im.getRGB(0, 0, w, h, rgbs, 0, w); for (int i = 0; i < w; i++) { Vector line = new Vector(); for (int j = 0; j < h; j++) { line.add(new Integer(rgbs[x])); //System.out.println("Pixel " + i + "," + j + "has " + // "RGB values of " + rgbs[x]); x++; } all.add(line); } } catch (Exception ex) { ex.printStackTrace(); } return all; } }
Partager