Swap Channels Memory Friendly

Channels Pipeline

Demonstrates how to swap the Red and Green channels of an image using a memory-friendly pipeline approach.

Сode Snippet

////                         /-- (R) ------- (R)--\
////                        /                      \
//// reader --->  splitter  ---- (G) --\ /-- (B)----  combiner  ---> writer
////                        \           X          /
////                         \-- (B) --/ \-- (G)--/
using (var reader = ImageReader.Create("Chicago.jpg"))
using (var splitter = new RgbChannelSplitter())
using (var combiner = new RgbChannelCombiner())
using (var writer = ImageWriter.Create("SwapChannelsMemoryFriendly.jpg"))
{
    reader.Receivers.Add(splitter);

    combiner.R = splitter.R;
    combiner.G = splitter.B;
    combiner.B = splitter.G;

    combiner.Receivers.Add(writer);

    Pipeline.Run(combiner);
}

Input

Chicago.jpg

Output

SwapChannelsMemoryFriendly.jpg

For AI-assisted development: Download Graphics Mill Code Samples XML Catalog