нашел решение и оформил в виде функции
C++ (Qt)
void colorizePixmap(QPixmap *img, int hue, int sat) // HUE - [0..359], Saturation - [0.255]
{
QImage *image = new QImage(img->toImage());
for (int i = 0; i < image->width(); i++)
{
for (int j = 0; j < image->height(); j++)
{
QRgb rgb = image->pixel(i,j);
QColor *col = new QColor(rgb);
col->setAlpha(qAlpha(rgb));
col->setHsv(hue, sat, col->value(), col->alpha());
image->setPixel(i,j, col->rgba());
}
}
*img = img->fromImage(*image);
delete image;
}
Быстродействие:
пнг 40х40 пикселей,
1. Windows 7, Intel DualCore 1.8 GHz - 2мс в серднем
2. Symbian S60v5, ARM11 434 MHz - 10мс в среднем