我有一個C#方法:如何調用C#的IEnumerable從IronRuby的
public static IEnumerator getPixels(Picture picture) {
for (int x=0; x < picture.width; x++) {
for (int y=0; y < picture.height; y++) {
yield return picture.getPixel(x, y);
}
}
}
我可以把這個罰款的IronPython:
for pixel in getPixels(pic):
r, g, b = getRGB(pixel)
gray = (r + g + b)/3
setRGB(pixel, gray, gray, gray)
但我不明白如何從調用此IronRuby的:
Myro::getPixels(pic) do |pixel|
r, g, b = Myro::getRGB pixel
gray = (r + g + b)/3
Myro::setRGB(pixel, gray, gray, gray)
end
所有我得到的回覆是Graphics+<getPixels>c__Iterator0.
我需要做些什麼才能真正獲得IronRuby中的每個像素並處理它?
我不能直接回答你的問題,但有領悟力灰色計算的innacuracy:它應該是RGB和0.3,0.59,0.11的點積。人們在不同的顏色中使用不同的亮度。如果您想表示顏色的先行亮度,所有這些都適用。 – 2011-05-23 22:15:30
你是對的:這不是一個直接的答案。甚至沒有間接的答案:)人們對RGB的亮度不相等地感知也是正確的,並且RGB加權有許多可能的值來製作更令人愉快的灰度圖像。但是這與手頭的問題無關(而且代碼實際上是製作完美的灰度圖像)。現在我需要弄清楚如何在IronRuby中調用Generator ... – 2011-05-23 22:37:47