remapChannels method

void remapChannels(
  1. ChannelOrder order
)

Remap the color channels to the given order. Normally Image color channels are stored in rgba order for 4 channel images, and rgb order for 3 channel images. This method lets you re-arrange the color channels in-place without needing to clone the image for preparing image data for external usage that requires alternative channel ordering.

Implementation

void remapChannels(ChannelOrder order) {
  if (numChannels == 4) {
    if (order == ChannelOrder.abgr ||
        order == ChannelOrder.argb ||
        order == ChannelOrder.bgra) {
      if (order == ChannelOrder.abgr) {
        for (final p in this) {
          final r = p.r;
          final g = p.g;
          final b = p.b;
          final a = p.a;
          p
            ..r = a
            ..g = b
            ..b = g
            ..a = r;
        }
      } else if (order == ChannelOrder.argb) {
        for (final p in this) {
          final r = p.r;
          final g = p.g;
          final b = p.b;
          final a = p.a;
          p
            ..r = a
            ..g = r
            ..b = g
            ..a = b;
        }
      } else if (order == ChannelOrder.bgra) {
        for (final p in this) {
          final r = p.r;
          final g = p.g;
          final b = p.b;
          final a = p.a;
          p
            ..r = b
            ..g = g
            ..b = r
            ..a = a;
        }
      }
    }
  } else if (numChannels == 3) {
    if (order == ChannelOrder.bgr) {
      for (final p in this) {
        final r = p.r;
        p
          ..r = p.b
          ..b = r;
      }
    }
  }
}