Je suis en train de créer une image en utilisant ce tableau: [-8421505, -8421505, -8421505, -8421505, ...] sa longueur est: 62416ArrayIndexOutOfBoundsException lors de la création d'une image à l'aide Raster
BufferedImage img = new BufferedImage(166, 376, BufferedImage.TYPE_INT_RGB);
int pixels[] = new int[166 * 376];
et voici où l'erreur doit être
img.getRaster().setPixels(0, 0, 166 , 376, pixels);
je sauve juste
File file = new File("new.png");
ImageIO.write(img, "png", file);
qui est:
ArrayIndexOutOfBoundsException: 62416
Peut-être que cela pourrait être utile: Des ([docs] https://docs.oracle.com/javase/8/docs/api/java/awt/image/WritableRaster.html#setPixels-int- int-int-int-double: A-): 'ArrayIndexOutOfBoundsException' - si les coordonnées ne sont pas dans les limites, ou si' dArray' est trop petit pour contenir l'entrée. – Zabuza
(à propos de la méthode setPixels): De même pour javadocs: Définit tous les échantillons pour un rectangle de pixels à partir d'un double tableau contenant un échantillon par élément de tableau. Une exception ArrayIndexOutOfBoundsException peut être levée si les coordonnées ne sont pas dans les limites. Cependant, la vérification des limites explicites n'est pas garantie. – pringi
C'est parce que votre raster utilise 1 ints par canal (3 au total). donc votre tableau doit être 'new int [166 * 376 * 3]' – matt