Когда я выполняю этот код, меняется только зеленое значение. Красное значение остается неизменным. Почему это и что мне делать?
Intial RGB: 90: 123: 92 Новый RGB должен быть: 123: 90: 92 Сейчас я получаю: 90:90:92
var img = new SimpleImage("smalllion.jpg");
var pix = img.getPixel(0,0);
print(img)
print("orginal rgb " + pix)
function swapRedGreen(pixel){
for(var pixel of img.values()){
var newG = pixel.getRed();
pixel.setGreen(newG)
var newR = pixel.getGreen();
pixel.setRed(newR);
}
}
swapRedGreen("smalllion.jpg")
print(img)
var pix1 = img.getPixel(0,0);
print(pix1)
Проблема. Возможно, это связано с тем, что в строке 9 вы назначаете пикселю зеленое значение, которое затем извлекаете в строке 10 для преобразования в красный цвет. Вы по существу конвертируете красный → зеленый, а затем зеленый → красный.
Решение: Попробуйте переключить линии 9 и 10.
Причина в том, что вы вызывали var newR = pixel.getGreen();
, green
уже установлен на red
цвет. Вместо этого сохраните исходный зеленый и красный переменные в начале.
Попробуйте это вместо этого:
function swapRedGreen(pixel) {
for (var pixel of img.values()) {
var oldRed = pixel.getRed();
var oldGreen = pixel.getGreen();
pixel.setGreen(oldRed);
pixel.getRed(oldGreen);
}
}