• 7772阅读
  • 7回复

如何将内存中的图像数据缩放显示出来,显示是黑屏(结帖) [复制链接]

上一主题 下一主题
离线visitorone
 

只看楼主 正序阅读 楼主  发表于: 2010-03-21
我的做法:
子类中重写了paintEvent(QEvent*)
{
    if(!_image.isNull())
    {
    QPainter painter(this);
    _image=_image.scaled(width(),height(),Qt::KeepAspectRatio,Qt::SmoothTransformation);
    painter.drawImage(0,0,_image);
     }
}

提供给父类调用的方法
void PicFrame::load_pic(QString str_path)     //显示图片
{
        _image.load(str_path);
     repaint();
}

同样的显示内存中数据的方法~
void PicFrame::load_data(unsigned char*  p_data)   {
  _image=QImage(p_data,768,576,QImage::Format_RGB888);
repaint();
}

然后在父类中采集视频流实时显示出来(因为采集的图片比较大所以我是想缩放显示),上面的方法是我想测试一下显示一张是否成功,结果显示图片缩放显示是正常的,但是采集到的内存数据显示是黑屏,我将采集到的图像保存下来是正常的,所以现在不确定到底是哪里有问题。
麻烦高手帮忙看下,如果哪里没说明白请提醒下~
[ 此帖被visitorone在2010-03-21 16:34重新编辑 ]
离线wisteria

只看该作者 7楼 发表于: 2015-01-24
学习了,谢谢指导
Winter in my heart
离线visitorone

只看该作者 6楼 发表于: 2010-03-21
谢谢,回头我去看下~
离线carl_xwz
只看该作者 5楼 发表于: 2010-03-21
如果是用QPixmap存的话,可以QByteArray存图片数据安全点!毕竟char*不那么保险!
离线carl_xwz
只看该作者 4楼 发表于: 2010-03-21
Re:如何将内存中的图像数据缩放显示出来,显示是黑屏
QImage主要是用来I/O的,QPixmap则主要是用来显示的,所以建议你从内存读数据显示到屏幕最好用QPixmap
离线visitorone

只看该作者 3楼 发表于: 2010-03-21
结帖=。=
显示出来了,不是上面这些方法的问题,是我传入的p_data只是个指针,没有开辟空间放数据,太不细心了~

还有1楼说我的方法太暴力了,还有没有简单点的方法呢?
离线visitorone

只看该作者 2楼 发表于: 2010-03-21
那个~1楼我没明白你的意思,我不是要把图片放进内存,我是要把采集到的图像数据显示出来~
离线carl_xwz
只看该作者 1楼 发表于: 2010-03-21
你的方法好暴力呀!
QPixmap就是将图片存入内存,你可以好好去看看这个类!
快速回复
限100 字节
 
上一个 下一个