во время написания 1го имадж плагина выяснилось, что жпег хэндлер неявно преобразует АРГБ изображение в РГБ:
switch (image.format()) {
case QImage::Format_Mono:
case QImage::Format_MonoLSB:
case QImage::Format_Indexed8:
gray = true;
for (int i = image.colorCount(); gray && i--;) {
gray = gray & (qRed(cmap[i]) == qGreen(cmap[i]) &&
qRed(cmap[i]) == qBlue(cmap[i]));
}
cinfo.input_components = gray ? 1 : 3;
cinfo.in_color_space = gray ? JCS_GRAYSCALE : JCS_RGB;
break;
default:
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
}
мне же было необходимо
cinfo.input_components = 4;
cinfo.in_color_space = JCS_UNKNOWN;
и при этом сохранять 4 компоненты цвета. Пофиксил это добавлением в свитч проверки на то что имадж в формате ARGB и соотвественно поправил запись. Кто прав - qjpeghandler или я ?