【问题标题】:How can I make this ImageBrightener method function properly?如何使此 ImageBrightener 方法正常运行?
【发布时间】:2016-02-08 07:10:38
【问题描述】:

这个 ImageBrightener 方法应该通过增加颜色值来使图像变亮。每个值都应该增加它与 255 之间距离的一半。因此,155 将变为 205,而 205 将变为 230,依此类推。任何人都可以帮助解决 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;
    }
}

【问题讨论】:

    标签: java arrays image for-loop multidimensional-array


    【解决方案1】:

    问题来了

    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; 
    

    【讨论】:

    • 非常感谢!没想到answer[x][y] 永远是 255。
    猜你喜欢
    • 2015-05-01
    • 2020-01-13
    • 2021-11-07
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多