proposition, pour le "remplissage"
Code:
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
| /**
* Teste si une image est "blanche", c'est-à-dire si elle est
* composée de couleurs proches du blanc, en indiquant leur proportion.
*
* @param img
* une image à tester
* @param tolerance [0.0-1.0]
* écart toléré dans la nuance de blanc ; ex: TRUE si [254, 253, 255] à 1% (soit 0.01f)
* @return la proportion de pixels "blancs" trouvés dans l'image
*/
public static float isWhite(BufferedImage img, float tolerance) {
int nbPxl = 0;
for (int i = 0; i < img.getHeight(); i++) {
for (int j = 0; j < img.getWidth(); j++) {
Color color = new Color(img.getRGB(j, i));
if (isWhite(color, tolerance)) {
nbPxl++;
}
}
}
return ((float) nbPxl) / (img.getHeight() * img.getWidth());
}
/**
* Teste si une couleur est "blanche", c'est-à-dire si elle est plus ou moins claire.
*
* @param color
* une couleur à tester
* @param tolerance [0.0-1.0]
* écart toléré dans la nuance de blanc ; ex: TRUE si [254, 253, 255] à 1% (soit 0.01f)
* @return false si la couleur n'est pas assez proche du blanc [255, 255, 255]
*/
public static boolean isWhite(Color color, float tolerance) {
assert tolerance >= 0.0f && tolerance <= 1.0f : "la tolérance doit être comprise entre 0 et 1 (soit 0% et 100%)";
return areSimilar(1.0f, color.getRed() / 255.0f, tolerance)
&& areSimilar(1.0f, color.getGreen() / 255.0f, tolerance)
&& areSimilar(1.0f, color.getBlue() / 255.0f, tolerance);
} |
:mouarf: