yes, script is probably the best way
var image = Document.RasterImage;
var sizeX = image.sizeX;
var sizeY = image.sizeY;
var tmp = Blender.CreateCanvas(sizeX, sizeY, 0);
Blender.Compose(tmp, 0, 0, sizeX, sizeY, image, 0, 0, 0, Blender.OpMapChannels,
Blender.MapChannels(Blender.ChR, Blender.ChG, Blender.ChB, Blender.ChA,
Blender.ChEmpty, Blender.ChEmpty, Blender.ChEmpty, Blender.ChR));
Blender.Compose(tmp, 0, 0, sizeX, sizeY, null, 0, 0, 0xff000000, Blender.OpXor);
Blender.Compose(image, 0, 0, sizeX, sizeY, tmp, 0, 0, 0, Blender.OpSrc);