Показать изображение в Qt, которое исходит от неподписанного символа ** - PullRequest
0 голосов
/ 18 января 2011

Я пытаюсь отобразить изображение в Qt, которое поступает как данные из другой функции.

Эта функция сохраняет строки изображения в виде знака без знака **

Я прочиталгде-то я мог бы как-то сохранить его как QByteArray, а затем создать QPixMap, а затем установить QPixMap метки для его отображения, но мне не очень повезло.

Это то, что у меня было:

unsigned char* fullCharArray = new unsigned char[imheight * imwidth];
for (int i = 0 ; i < imheight ; i++)
for (int j = 0 ; j < imwidth ; j++)
fullCharArray[i*j+j] = imageData[i ][j];

QPixmap *p = new QPixmap(reinterpret_cast<const char *>(fullCharArray));
ui->viewLabel->setPixMap(p);

Но это, кажется, дает мне ошибку, и в любом случае может быть неправильным.Когда я пытался вызвать setPixMap (p []), ошибка исчезает, но изображение не отображается в метке.

imageData - это двумерный массив, который заполняется другой моей функцией.Лучше всего я решил, что для создания нового QPixMap мне пришлось преобразовать его в одномерный массив и выполнить там вычисления вручную.Это то, что делает двойной цикл For.

Так есть ли лучший способ отображения данных этого изображения в Qt?

Ответы [ 3 ]

0 голосов
/ 18 января 2011

Используйте QImage. Этот конструктор должен помочь вам: http://doc.qt.io/qt-5/qimage.html#QImage-4

0 голосов
/ 18 января 2011

Pixmaps не являются двумерными массивами пикселей. Они фактически определены как массив символьных строк, описывающих изображение.

Например, изображение 4x4 пикселей с 4 пикселями в центре черного цвета и 4 угловыми пикселями красного цвета:

/* XPM */
static char * sample_xpm[] = {
"4 4 3 1",
"   c #FF0000",
".  c #FFFFFF",
"+  c #000000",
" .. ",
".++.",
".++.",
" .. "};

Это удобный формат файла для хранения небольших изображений (например, для кнопок панели инструментов), которые можно интегрировать как есть в исходный файл C, используя стандартную директиву #include, для компиляции вместе с остальной программой. *

0 голосов
/ 18 января 2011

Вы используете QPixmap, если данные уже находятся в формате изображения, таком как PNG или jpeg с заголовком.

Чтобы создать изображение из значений пикселей, используйте Qimage , затем преобразуйте его вpixmap (Qpixmap.fromImage () - при необходимости сохранить или отобразить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...