Ну, я мог бы решить проблему следующим образом:
Leptonica предлагает функцию
l_int32 pixWriteMemBmp (l_uint8 **pdata, size_t *psize, PIX *pix)
С помощью этой функции вы можете записывать в память вместо файлового потока.Тем не менее (в этом примере) заголовок и формат Bmp сохраняются (есть и те же функции для других форматов изображений).
Соответствующая функция из QT такая:
bool QImage::loadFromData ( const uchar * data, int len, const char * format = 0 )
Так какЗаголовок сохраняется, мне просто нужно передать данные ptr и размер в функцию loadFromData, а QT сделает все остальное.
Так что все вместе это будет выглядеть так:
PIX *m_pix;
FILE * pFile;
pFile = fopen( "PathToFile", "r" );
m_pix = pixReadStreamBmp(pFile); // If other file format use the according function
fclose(pFile);
// Now we have a Pix object from leptonica
l_uint8* ptr_memory;
size_t len;
pixWriteMemBmp(&ptr_memory, &size, m_pix);
// Now we have the picture somewhere in the memory
QImage testimage;
QPixmap pixmap;
testimage.loadFromData((uchar *)ptr_memory,len);
pixmap.convertFromImage(testimage);
// Now we have the image as a pixmap in Qt
Этона самом деле работает для меня, хотя я не знаю, есть ли способ сделать это задом наперед так легко.(Если есть, пожалуйста, дайте мне знать)
С наилучшими пожеланиями