执行此代码时,只交换绿色值。红色值保持不变。为什么这样,我该怎么做?
初始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)
答案 0 :(得分:1)
原因是当您致电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);
}
}
答案 1 :(得分:0)
问题:这可能是因为在第9行中,您为像素指定了绿色值,然后在第10行中检索该值以转换为红色。你基本上是转换红色 - >绿色,然后绿色 - >红色。
解决方案:尝试切换第9行和第10行。