2016-10-09 3 views
-1

Dans mon projet java, j'ai besoin d'une méthode pour convertir une image en niveaux de gris 8 bits (0,225) en une image à 3 bits (0,7). Des idées?comment convertir une image en niveaux de gris où chaque pixel est 8 bits à une image ayant une représentation de 3 bits pour chaque pixel seulement?

J'ai utilisé cette méthode, mais il me donne

Exception dans le thread "principal" java.lang.ArrayIndexOutOfBoundsException: Coordonnée hors limites!

image.getRaster().setSample(x, y, image.getRaster().getSample(x,y, 0)/32) 
+1

L'expression «ne fonctionne pas» ne nous en dit pas beaucoup. Vous pouvez trouver ceci utile: [Comment poser une bonne question?] (Http://stackoverflow.com/help/how-to-ask). – MJH

+0

La modification d'un échantillon pour utiliser moins de bits ne modifie pas réellement l'image pour qu'elle soit une image en niveaux de gris à 3 bits. Le tampon de données d'image est toujours le même bits par pixel que précédemment. --- Si vous souhaitez conserver une "couleur" de pixel approximative (niveau de gris), vous devez effacer les bits inférieurs, ne pas décaler les bits, utilisez donc 'sample = sample & 0xE0'. – Andreas

Répondre

0

Je pense que vous avez tout simplement oublié que la division par 32 ne va pas vous donner un nombre entier. Essayez d'analyser cette valeur en INTEGER, et cela pourrait (ou non) résoudre votre problème.

Comme l'erreur concerne la taille du tableau, assurez-vous de ne pas dépasser les limites de longueur et de hauteur de l'image.