2016-07-11 8 views
0

У меня есть одномерный целочисленный массив значений rgb, который мне нужно передать BufferedImage, а затем использовать его для генерации jpeg. У меня есть 128 * 128 пикселей, которые я шаговые по сравнению с использованием setrgb (я попытался прохождения Буферизированного изображения массива за один раз, попал в неприятность, и хорошо, что это отдельный вопрос)BufferedImage setRGB: изображение сжимается до размера квартала

 int numRows = 128; 
     int numCols = 128; 
     int inputIndex = 0; 
     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
     for(int row = 0; row < numRows; row++){ 
      for(int col = 0; col < numCols; col ++){ 
       int rgb = rgbvals[inputIndex++]; 
       rgb = (rgb << 8) + rgbvals[inputIndex++]; 
       rgb = (rgb << 8) + rgbvals[inputIndex++]; 
       image.setRGB(col,row, rgb); 
      }    
     } 
     File outputFile = new File("output.jpg"); 
     ImageIO.write(image, "JPEG", outputFile); 

Это выглядит довольно просто, но мое изображение выглядит так: 128*128 picture of an eye, except it takes up 1/4 the space it needs and the rest of the image is black

Мне кажется, что я мог упустить небольшую деталь. Буду признателен за понимание, спасибо!

ответ

0

Это была глупая ошибка, мне нужно было просто вызвать конструктор BufferedImage с numRows и numCols правильно, вместо других переменных, которые я использовал (ширина, высота ссылалась на что-то еще).

Это исправлено.