// g++ -g -Wall -o out test.cpp `pkg-config vips-cpp --cflags --libs` #include #include using namespace vips; int main( int argc, char **argv ) { if(VIPS_INIT(argv[0])) vips_error_exit(NULL); VImage c = VImage::new_from_file("p-000001-Cyan.tif", VImage::option()->set ("access", VIPS_ACCESS_SEQUENTIAL)); VImage m = VImage::new_from_file("p-000001-Magenta.tif", VImage::option()->set ("access", VIPS_ACCESS_SEQUENTIAL)); VImage y = VImage::new_from_file("p-000001-Yellow.tif", VImage::option()->set ("access", VIPS_ACCESS_SEQUENTIAL)); VImage k = VImage::new_from_file("p-000001-Black.tif", VImage::option()->set ("access", VIPS_ACCESS_SEQUENTIAL)); VImage cmyk_layers = VImage::bandjoin({c, m, y, k}) .invert() .copy(VImage::option() ->set("interpretation", VIPS_INTERPRETATION_CMYK)); VImage spot_layer = VImage::new_from_file("p-000001-HKS 05.tif", VImage::option()->set("access", VIPS_ACCESS_SEQUENTIAL)); VImage merged = spot_layer .invert() .ifthenelse({ 255 * 0, 255 * 0.431373, 255 * 0.988235, 255 * 0 }, cmyk_layers); merged.write_to_file("merged.tif"); return 0; }