• 5833阅读
  • 6回复

jpg图片这样显示哪错了? [复制链接]

上一主题 下一主题
离线浪迹江湖
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-19
void Widget::paintEvent(QPaintEvent *event)
{
    qDebug()<<"paintEvent(QPaintEvent *event)";
    QPainter painter(this);

    QImage image("/root/cor.jpg");
    QPixmap pixmap((char* )image.bits());//把图片信息转化为char*,然后作为QPixmap
构造函数参数,问题就在这条语句,但不知道原因

    painter.drawPixmap(0, 0, pixmap.width(), pixmap.height(), pixmap);

}

显示结果为全白,哪位高手知道的麻烦不吝赐教,谢了
离线robertkun

只看该作者 1楼 发表于: 2009-11-19
保存一张 pixmap看看是不是空的
                                              简单的生活使人快乐!
离线浪漫天使
只看该作者 2楼 发表于: 2009-11-19
QPixmap pixmap((char* )image.bits());//奇怪了为什么不用
QPixmap pixmap = QPixmap::fromImage(image);

更奇怪的为什么不直接用
QPixmap pixmap("/root/cor.jpg");
..............
离线jiulai
只看该作者 3楼 发表于: 2009-11-19
看一下文档就知道了。
离线浪迹江湖

只看该作者 4楼 发表于: 2009-11-19
引用第2楼浪漫天使于2009-11-19 13:57发表的  :
QPixmap pixmap((char* )image.bits());//奇怪了为什么不用
QPixmap pixmap = QPixmap::fromImage(image);
更奇怪的为什么不直接用
QPixmap pixmap("/root/cor.jpg");
.......


我的本意是:
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pixmap(pThread ->data);//pThread ->data是从摄像头设备文件读取的图片信息,通过内存缓冲区传来的
painter.drawPixmap(0, 0, pixmap.width(), pixmap.height(), pixmap);


pThread有数据,widget却什么都画不出来,不知道为什么
我怀疑是QPixmap pixmap(const char*)的char*只能从硬盘读,而不能从内存读信息
离线浪漫天使
只看该作者 5楼 发表于: 2009-11-19
那你可以根据二楼的建议 先保存个图片出来,确定图片没错
再在界面上画也不迟,就算画不出来
也可以确定是图片数据的问题还是画的问题
是吧
离线dbzhang800

只看该作者 6楼 发表于: 2009-11-19
认真看看manual吧, 你是在用 第4个构造函数么?(如果是的话,你知道xpm是什么么)

QPixmap ()
QPixmap ( int width, int height )
QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
QPixmap ( const char * const[] xpm )
QPixmap ( const QPixmap & pixmap )
QPixmap ( const QSize & size )
快速回复
限100 字节
 
上一个 下一个