Что-то я не пойму как из char* получить Картинку в Qt? Сделал тест:
unsigned char* array = new unsigned char[10*10*3];
for(int i =0;i<300;i++){
array[i]=0xFF;
}
array[0]=0;
array[1]=0;
array[2]=0xFF;
QImage* img = new QImage(array,10,10,QImage::Format_RGB32);
ПО идее, он должен вывести синий первый пиксель, а остальные белые. но не тут то было:
http://hostingkartinok.com/show-image.php?id=1796d7cd69325174c3df00c3bc846907
Может я чего-то не понимаю? если я устанавливаю array[0]=0xFF; То пиксель - синий. Так что там формат BGR? А ещё, как вы заметили, белым закрашивается не всё изображение, а до определённого момента. Эмпирически я выяснил, что пикселы кратные 3 вообще никак не влияют и никак не учитываются.
Так как блин работать? Вроде нормальный формат RGB32, если я правильно понял - это 0xRRGGBB или нет? По 8 бит на цвет?
Мне, изначально надо вывести ЧБ картинку которая записана в short на экран QT.Я так посмотрел, что все опреции производятся в char*. Поэтому, я каждый пиксель short* поделил на 256 и перенёc в char*. Не нашел формата в QImage для отображения ЧБ картинок, так что решил сделать алгоритм - что-то типа
unsigned char* color = new unsigned char[h*v*3];
for(int i =0;i<h*v;i++){
color[i*3]=data[i];
color[i*3+1]=data[i];
color[i*3+2]=data[i];
}
QImage* img = new QImage(array,w,h,QImage::Format_RGB32);
по моим соображениям оно должно вывести ЧБ картинку. но выводило какой-то бред. И я поставил вышеизложенный эксперимент, который провалился. Подскажите. в чём там дело? И, может, как оптимальней решить задачу?