Добавьте определенное количество к «красному» значению RGB, чтобы создать эффект заката, помогите пожалуйста. (Джава) - PullRequest
0 голосов
/ 21 июня 2011

Хорошо, поэтому я хочу, чтобы программа проходила картинку построчно и добавляла определенное количество к красному значению (RGB), чтобы создать эффект заката. Единственная проблема заключается в том, что когда вы получаете разные значения для красного, зеленого и синего, я не могу добавить, скажем, 50 к красному значению, чтобы получить эффект заката. Приведенный ниже код является только той частью, которая отвечает за циклическое прохождение линий и изменение значений пикселей.

for(int y=0; y < sunsetPic.getHeight(); y++)                  
        {
            for(int x = 0; x < sunsetPic.getWidth(); x++)             
            {
                targetPixel = sunsetPic.getPixel(x,y);                 
                pixelColor = targetPixel.getColor();                    

                redValue = pixelColor.getRed();
                greenValue = pixelColor.getGreen();
                blueValue = pixelColor.getBlue();

                pixelColor = new Color(redVlue + 50, greenValue, blueValue);
                targetPixel.setColor(pixelColor);                       
            }
        }

Как видите, я не могу просто добавить 50 к красному значению, чтобы создать эффект заката. Может ли кто-нибудь помочь мне, сделав так, чтобы я мог повлиять на закат?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Если вы можете, загрузите изображение в программу рисования, такую ​​как Gimp или Photoshop, и используйте ее для редактирования и предварительного просмотра изменений цвета.Как только вы получите желаемый вид, используйте процент RGB, к которому вы пришли, и это будут ваши изменения времени выполнения.

Я бы предложил использовать множитель вместо дополнения, и я бы предложил не повышать ваш красный выше1.0, но следуйте идее Эдвина Бака о умножении на зеленый и синий.

1 голос
/ 21 июня 2011

Чтобы добиться эффекта заката, вам нужно сделать немного больше, чем добавить немного красного. Хорошие шансы, вам нужно убрать немного зеленого и синего тоже. Эти удаления, вероятно, будут пропорциональными, оставляя процент от исходного цвета. Наиболее гибкий метод для этого - использовать одну или несколько цветовых матриц. Таким образом, вы можете независимо настраивать каждый выходной цвет на основе линейной комбинации входных цветов. Как правило, вы включаете цвет A, что означает, что большинство цветовых матриц имеют размер 4x5, а пятый элемент является константой, добавляемой или вычитаемой независимо от входных данных.

Здесь приведен пример кода , и в зависимости от вашей потребности в точности вы можете настраивать матрицу преобразования столько раз, сколько захотите, пока не получите требуемые визуальные эффекты.

...