Ho un'app per Android in cui l'utente scatta una foto di se stesso con la fotocamera anteriore e quindi la foto viene caricata sul mio server. Ho notato che molte foto arrivano sul mio server troppo scure (a volte quasi impossibile vedere chiaramente la faccia dell'utente).Come rilevare foto scure su Android
Vorrei escludere tali foto e mostrare la notifica (ad esempio "Foto è troppo scura. Prendi una foto in più") per l'utente nel lato app. Come potrei realizzare tale compito in Android?
EDIT:
ho scoperto come calcolare la luminosità per un singolo pixel (grazie a questa risposta: https://stackoverflow.com/a/16313099/2999943):
private boolean isPixelColorBright(int color) {
if (android.R.color.transparent == color)
return true;
boolean rtnValue = false;
int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)};
int brightness = (int) Math.sqrt(rgb[0] * rgb[0] * .299 + rgb[1]
* rgb[1] * .587 + rgb[2] * rgb[2] * .114);
if (brightness >= 200) { // light color
rtnValue = true;
}
return rtnValue;
}
Ma ancora non ho un'idea chiara di come per determinare lo "stato" della luminosità dell'immagine intera. Eventuali suggerimenti?
Se è possibile determinare la luminosità per un pixel singe, perché non analizzare tutti i pixel allo stesso modo per ottenere il valore medio, e l'uso che? – JonasCz