• 8016阅读
  • 6回复

已解决!!为什么只能载入png图片,不能载入jpeg图片? [复制链接]

上一主题 下一主题
离线codero
 
只看楼主 倒序阅读 楼主  发表于: 2009-03-02
— 本帖被 XChinux 执行加亮操作(2009-03-03) —
我的测试代码如下:
----------------------------例1-----------------------------
#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QImage>
#include <QString>


int main(int argc,char *argv[])
{
    QImage p("test.jpeg");
    QApplication app(argc, argv);
    if(!p.isNull())
    {
    QLabel *label = new QLabel("OK");
    label->show();    
    return app.exec();
    }
}
这样,无论if中的条件是!p.isNull()或者p.isNull(),都无法显示“OK”

-------------------------------例子2-----------------------------------

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QImage>
#include <QString>


int main(int argc,char *argv[])
{
    QImage p("test.png");
    QApplication app(argc, argv);
    if(!p.isNull())
    {
    QLabel *label = new QLabel("OK");
    label->show();    
    return app.exec();
    }
}

这样,当if条件为!p.isNull(),则可以显示"OK",证明加载成功

--------------------------------
在论坛查找,说加载jpeg要先用QPixmap 然后转换才能用QImage加载。

于是,我修改代码

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QImage>
#include <QString>


int main(int argc,char *argv[])
{
    QPixmap p("test.png");          //这里改用了QPixmap
    QApplication app(argc, argv);
    if(!p.isNull())
    {
    QLabel *label = new QLabel("OK");
    label->show();    
    return app.exec();
    }
}

结果,依然是无法加载!!

我又搜索了一下,有的说插件问题,但我打开Qt-4.4.3/plugins/imagefomats目录下,
看到有libqjpeg.so

那请问我应该怎么加载jpeg图片呢??
谢谢!!
[ 此帖被codero在2009-03-03 15:04重新编辑 ]
离线codero
只看该作者 1楼 发表于: 2009-03-03
又搜索了一下,在代码中加入了
#include <QtPlugin>
Q_IMPORT_PLUGIN(qjpeg)

然后在.pro中加入了
QTPLUGIN     += qjpeg

然后make出现错误
g++  -o main main.o     -L/usr/lib/qt4/plugins/imageformats/ -lqjpeg -lqgif -lqmng -lQtGui -lQtCore -lpthread
main.o: In function `StaticqjpegPluginInstance':
/home/owp/main/main.cpp:7: undefined reference to `qt_plugin_instance_qjpeg()'
collect2: ld 返回 1
make: *** [main] 错误 1
离线codero
只看该作者 2楼 发表于: 2009-03-03
请问大家有遇到同样的情况吗?大家是怎么载入的呢?
离线codero
只看该作者 3楼 发表于: 2009-03-03
天阿!花了我一天的时间去摸索!!终于发现问题了!!
问题在于:    QImage p("test.jpeg");
    QApplication app(argc, argv);

这两句的顺序反了!!应该是    QApplication app(argc, argv);
然后再                                           QImage p("test.jpeg");

但至于为什么要这样做呢?有人解释一下吗?谢谢
离线icosagon

只看该作者 4楼 发表于: 2009-03-03
可能app的初始化会加载一些DLL吧,或其它QImage 需要的东西
离线wd007

只看该作者 5楼 发表于: 2009-03-05
QApplication app(argc, argv);

这个多数情况下在第一句
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线junee1122
只看该作者 6楼 发表于: 2012-09-25
快速回复
限100 字节
 
上一个 下一个