无法在Qt中导入jpeg文件

时间:2011-12-08 21:55:22

标签: qt import jpeg

我的任务是在Qt中实现JPEG编码器/解码器。我必须处理jpeg标记(例如0xFFC4,这是霍夫曼表的开始)和标记之间的数据。我使用QFile类打开我的jpeg文件。调试结果时如下图所示。你可以看到marker [0]中的值是-1/255而marker [1]是-40/216,而if语句永远不是真的我不知道为什么?代码如下:

try{
        char markers[2];
        char TableData[64];
        QFile *file= new QFile( "NovaSlika.jpeg");
        if(file->open(QFile::ReadOnly )){
            while(file->read((char*)markers,sizeof(markers))){

                if(markers[0]=='255' && markers[1]=='216'){//FF i C4
                    char TableLength[2];
                    char tableMetaData;
                    file->read((char*)TableLength,sizeof(TableLength));//Read table length
                    file->read((char*)tableMetaData,sizeof(tableMetaData));//Read metadata
                    file->read((char*)TableData,sizeof(TableData));//Read data
                    break;
                }

            }
        }

调试过程的图片为here

1 个答案:

答案 0 :(得分:1)

小心条件:read()返回

  • 0,如果没有更多数据。
  • -1如果有错误,例如阅读结束。
  • 否则
  • #bytes。

您应该这样做:

while( file->read( (char*)markers, sizeof(markers) ) == 2 ) 

这条线也不对:

markers[0]=='255' && markers[1]=='216'

摆脱那些单引号。 (-gall on gcc会警告你)。它应该是:

markers[0]==255 && markers[1]==216