= RGB to Grayscale Conversion =
<code> OnFilterStart: {if (imageMode != GrayScaleMode && imageMode != RGBMode) { ErrorOk("This filter works only with 8-bit images in RGB or Grayscale mode."); doAction(CA_CANCEL); } return false; }ForEveryTile: {if (imageMode == RGBMode) // Put Grayscale version into channel 0 // Grayscale conversion similar to Photoshops RGB Mode to Grayscale Mode conversion // app. 30% Red, 59% Green, 11% Blue { for (y=y_start; y<y_end; y++) for (x=x_start; x<x_end; x++) pset( x, y, 0, ( src(x, y, 0) * 76 + src(x, y, 1) * 150 + src(x, y, 2) * 29 ) / 255 ); }// FILTER CODE that does its weird line art or grayscale thing on channel 0... if (imageMode == RGBMode) // Copy result to channels 1 and 2 // because a Grayscale image in RGB mode has three identical channels {for (y=y_start; y<y_end; y++) for (x=x_start; x<x_end; x++) { pset(x, y, 1, pget(x, y, 0)); pset(x, y, 2, pget(x, y, 0)); } } return true; }</code> |