2016-02-08 3 views
0

Этот метод ImageBrightener должен скрасить изображение, увеличив значения цвета. Каждое значение должно увеличивать половину расстояния между ним и 255. Таким образом, 155 будет идти до 205, а 205 - до 230 и так далее. Может кто-нибудь помочь выяснить проблему с ImageBrightener! БлагодаряКак я могу правильно использовать этот метод ImageBrightener?

import squint.SImage; 
public class ImageBrightener implements ImageTransformer { 

    @Override 
    public SImage transform(SImage picture) { 
     return BrightenImage(picture); 
    } 

    private static SImage BrightenImage(SImage si) { 
     int[][] newReds = BrightenImageSingleChannel(si.getRedPixelArray()); 
     int[][] newGreens = BrightenImageSingleChannel(si.getGreenPixelArray()); 
     int[][] newBlues = BrightenImageSingleChannel(si.getBluePixelArray()); 

     return new SImage(newReds, newGreens, newBlues); 
    } 

    // Here is the code to brighten the image and is not functioning properly 
    private static int[][] BrightenImageSingleChannel(int[][] pixelArray) { 
     private static int[][] BrightenImageSingleChannel(int[][] pixelArray) { 
      int columns = pixelArray.length; 
      int rows = pixelArray[0].length; 
      int[][] answer = new int[columns][rows]; 
      for (int x = 0; x < columns; x++) { 
       for (int y = 0; y < rows; y++) { 
        answer[x][y] = 255 - pixelArray[x][y] ; 
        answer[x][y] = answer[x][y] + pixelArray[x][y] ; 
       } 
      } 
      return answer; 
     } 
    } 

    // Here is the properly functioning code for darkening my image. 
    private static int[][] DarkenImageSingleChannel(int[][] pixelArray) { 
     int columns = pixelArray.length; 
     int rows = pixelArray[0].length; 
     int[][] answer = new int[columns][rows]; 
     for (int x = 0; x < columns; x++) { 
      for (int y = 0; y < rows; y++) { 
       answer[x][y] = (255 * 2)/3 - pixelArray[x][y]; 
      } 
     } 
     return answer; 
    } 
} 
+0

Читали [спросить]? – Amit

ответ

0

Проблема здесь

answer[x][y] = 255 - pixelArray[x][y] ; 
answer[x][y] = answer[x][y] + pixelArray[x][y] ; 

answer[x][y] всегда будет 255.

Попробуйте

answer[x][y] = (pixelArray[x][y] + 255)/2; 
+0

Большое вам спасибо! Не понял, что 'answer [x] [y]' всегда будет 255. – Peanutcalota

Смежные вопросы