Channel Merger is a small GUI utility written in Python (PySide) that can combines channels from multiple images into a single texture. This process, often called channel packing, is commonly used to store different material maps (such as roughness, metallic, and ambient occlusion) in a single image.
Channel Merger simplifies the process of channel packing by being a lightweight GUI that you can throw images into, select which color channels to extract (including Alpha) and export a single image containing only those channels. It's main features are:
The app will auto detect a RGB image and pre-populate all 3 channels. It will only do this if all channels are empty. This was a convenience feature but some may find it annoying. I'm trying to find a good middle-ground (maybe a toggle?). Simply overload the other channels with a different image or clear them if you don't wish to use them.
Channel Packing is a method of saving memory in 3D applications as for convenience they usually use a standardised API that assumes a specific number of channels when reserving memory on the GPU. This is especially true in Blender Cycles where, as far as I understand, any image will be stored on the GPU as a 4 channel image and use the entire memory associated with it even if you only used 1 channel in your input image.
Channel Packing reduces memory by allowing you to store grayscale material maps in a single image, or in a channel of another existing image. If you use transparent PNGs or GIFs you are technically already familiar as the Alpha channel in those images is commonly used for storing the Opacity texture.
For example: If you load a Base Color, Opacity, Roughness, Bump, Normal and Metallic texture you now have 6 images to load, each assumed to be 4 channels. You could instead make Base Color + Opacity, Roughness + Bump + Metallic, and Normal. You now only have 3 images to load, halving you memory use and making better use of the memory that was already being used previously.
This app is a personal project that I have decided to open source. It is provided as is and I make no promises as to its stability or security.
I use LLMs to help with writing some code or helping me with understanding libraries etc. While I am a developer my main language is not Python so LLMs have been extremely helpful in helping me build this application at all given the complexities of OpenCV, PySide and my limited time.
I do provide a pre-built exe and a linux binary, I use the Windows one all the time. I do not use Linux too often outside of servers, but the Linux version seems to work on both Ubuntu and OpenSuse. Both were built with Pyinstaller they may cause AVs to scream. These, as far as I am aware, false positives. You can clone the repo check the code and run via src/main.py if you wish.
It is a single window app. It's not super pretty but it works.

Figure: Screenshot of the main Channel Merger interface
If you'd like to try it out you can grab it from the Github repo:
You can either clone the repo to build/run from source or you can head to releases to grab the latest release.