Channel Shuffle

Swap, flip and mix channels from two different images with ease.

2015
Download ZIP View source on GitHub

Windows | Version 0.10 beta | 2015-01-30

The download comes with both the GUI version (16MB) and the command line version (200kB). The command line version can be used entirely on its own.

Introduction

Channel Shuffle can be used to create images from specified channels (red, green, blue and alpha) from two images. It is written with the goals of being lightweight, fast, easy to use and portable.

There are two parts to this application, first there is channel_shuffle, which is a command line application that can be used independently. Then there is channel_shuffle_gui, which is a graphical front end for channel_shuffle created in Qt.

The application and its source are in the public domain. Find the source on GitHub. Feel free to do whatever you want with the source code.

It's written in C++, it uses the cross platform library SOIL to load and save images, and the GUI is made in Qt. I have only compiled it for Windows, but since it was made with portability in mind it's hopefully easy to get it to compile on other platforms.

Easy and fast to use

  1. Drag and drop an image to one of the inputs on the left to import it.
  2. Select your channels and if you want to invert any of them in the output image using the radio buttons in the middle and the buttons at the top.
  3. Drag and drop the output image to either a folder on your hard drive to save out the final image, or to one of the inputs to keep shuffling.

Demonstration of the application.

Example use cases

  • Flip or invert channels in a normal map without having to open up something huge like Photoshop or Gimp.
  • Easily and quickly pack many separate textures into fewer ones to lower the number of texture samples in your game.
  • Execute the command line version somewhere in your pipeline to pack those textures automatically.
  • Turn four separate grayscale images into one channel each in a single image in just a few seconds.