Yalantis/uCrop · error · CImgArgumentException
CImg(): Invalid specified axes order
Error message
CImg(): Invalid specified axes order '%s'.
What it means
Guard in the axes-permuting CImg constructor: the 'order' string must contain exactly the four characters x,y,z,c in some permutation (matched via a packed 4-char code switch); any other character, a repeated axis, or a wrong-length string falls through to this exception naming the invalid order string.
Solutions
- Pass a 4-character string that is a permutation of 'x','y','z','c', e.g. "xyzc", "yzxc", or "czxy"
- Check for typos or extra characters in the order argument at the call site
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at ucrop/src/main/jni/CImg.h:13356 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Yalantis/uCrop@f788b534b4 (2026-09-08).
Data as JSON: /api/errors/644f2023bc69ff07.
Report an issue: GitHub.
Appendix: source
Thrown at ucrop/src/main/jni/CImg.h:13356
case 0x1302 : inv_order = "zxcy"; s0 = size_y; s1 = size_c; s2 = size_x; s3 = size_z; break; // ycxz
case 0x1320 : inv_order = "cxzy"; s0 = size_y; s1 = size_c; s2 = size_z; s3 = size_x; break; // yczx
case 0x2013 : inv_order = "yzxc"; s0 = size_z; s1 = size_x; s2 = size_y; s3 = size_c; break; // zxyc
case 0x2031 : inv_order = "ycxz"; s0 = size_z; s1 = size_x; s2 = size_c; s3 = size_y; break; // zxcy
case 0x2103 : inv_order = "zyxc"; s0 = size_z; s1 = size_y; s2 = size_x; s3 = size_c; break; // zyxc
case 0x2130 : inv_order = "cyxz"; s0 = size_z; s1 = size_y; s2 = size_c; s3 = size_x; break; // zycx
case 0x2301 : inv_order = "zcxy"; s0 = size_z; s1 = size_c; s2 = size_x; s3 = size_y; break; // zcxy
case 0x2310 : inv_order = "czxy"; s0 = size_z; s1 = size_c; s2 = size_y; s3 = size_x; break; // zcyx
case 0x3012 : inv_order = "yzcx"; s0 = size_c; s1 = size_x; s2 = size_y; s3 = size_z; break; // cxyz
case 0x3021 : inv_order = "yczx"; s0 = size_c; s1 = size_x; s2 = size_z; s3 = size_y; break; // cxzy
case 0x3102 : inv_order = "zycx"; s0 = size_c; s1 = size_y; s2 = size_x; s3 = size_z; break; // cyxz
case 0x3120 : inv_order = "cyzx"; s0 = size_c; s1 = size_y; s2 = size_z; s3 = size_x; break; // cyzx
case 0x3201 : inv_order = "zcyx"; s0 = size_c; s1 = size_z; s2 = size_x; s3 = size_y; break; // czxy
case 0x3210 : inv_order = "czyx"; s0 = size_c; s1 = size_z; s2 = size_y; s3 = size_x; break; // czyx
}
CImg<t>(values,s0,s1,s2,s3,true).get_permute_axes(inv_order).move_to(*this);
} else {
_width = _height = _depth = _spectrum = 0; _data = 0;
throw CImgArgumentException(_cimg_instance
"CImg(): Invalid specified axes order '%s'.",
cimg_instance,
axes_order);
}
} else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; }
}
//! Construct image from reading an image file.
/**
Construct a new image instance with pixels of type \c T, and initialize pixel values with the data read from
an image file.
\param filename Filename, as a C-string.
\note
- Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it reads the image
dimensions and pixel values from the specified image file.
- The recognition of the image file format by %CImg higlhy depends on the tools installed on your system
and on the external libraries you used to link your code against.
- Considered pixel type \c T should better fit the file format specification, or data loss may occur duringView on GitHub (pinned to f788b534b4)