Я хочу преобразовать монохромное изображение UINT16 в 8-битное изображение на C++.
У меня есть это изображение в
char *buffer;
Я хотел бы передать новый преобразованный буфер в QImage (Qt).
Я пытаюсь использовать freeImagePlus.
fipImage fimage;
if (fimage.loadfromMemory(...) == false)
//error
loadfromMemory нужен адрес fipMemoryIO:
loadfromMemory (fipMemoryIO &memIO, флаг int = 0)
So I do
fipImage fimage;
BYTE *buf = (BYTE*)malloc(gimage.GetBufferLength() * sizeof(BYTE));
// 'buf' is empty, I have to fill it with 'buffer' content
// how can I do it?
fipMemoryIO memIO(buf, gimage.GetBufferLength());
fimage.loadFromMemory(memIO);
if (fimage.convertTo8Bits() == true)
cout << "Good";
Тогда я бы сделал что-то вроде
fimage.saveToMemory(...
or
fimage.saveToHandle(...
Я не понимаю, что такое FREE_IMAGE_FORMAT, который является первым аргументом любой из этих двух функций. Я не могу найти информацию об этих типах в документации freeImage.
Тогда я закончу с
imageQt = new QImage(destiny, dimX, dimY, QImage::Format_Indexed8);
Как я могу заполнить 'buf' содержимым начального буфера?
И получить данные из fipImage в данные uchar * для QImage?
Спасибо.