您的位置:首页 > 编程语言 > Qt开发

qt显示RGB彩色图

2016-03-11 19:08 330 查看
for(int i = 0;i<height;i++)
{
for(int j = 0;j<width;j++)
    {
ImageRGB_m[i*3*width+3*j]  =ImageR_m[i*width+j];
ImageRGB_m[i*3*width+3*j+1]=ImageG_m[i*width+j];
ImageRGB_m[i*3*width+3*j+2]=ImageB_m[i*width+j];
}
}
QImage *tempImage=new QImage(ImageRGB_m,width,height,QImage::Format_RGB888);
ImageLable_m->setImagePix(tempImage);
ImageLable_m->show();
ui->image_LB_show->setPixmap(QPixmap::fromImage(*image));
中间的ImageLable_m是我自己写的一个专门用于显示图片包含QLabel的一个类.这个是在5.5.1版本中可以先试采土代码。
网上发现很多人说RGB的彩图显示不了,最开始我的也是现实不了,后来发现是QImage(ImageRGB_m,width,height,QImage::Format_RGB888);这个是个重载函数,如果要限定每一行的
数据大小,切记不要限定为width,这样也是导致显示不了的主要原因,这时候看tempImage的调试信息
显示位invalid,将限定数据大小的去掉就可以正常显示彩图了。也就是不要写成QImage(ImageRGB_m,width,height,width ,QImage::Format_RGB888);,如果要防止图片扭曲可以写成下面这样就可以了
QImage *tempImage=new QImage(ImageRGB_m,width,height,3*width,QImage::Format_RGB888);
防止图片扭曲:
同时限定每一行的数据大小可以保证
图片显示不扭曲,这里之前也是一直搞不懂图片为什么会扭曲,其实就是没有限定每一行数据的大小,当,
不限定每一行数据的大小的时候磨人的貌似是8的倍数的就刚好可以显示,否则就会发生错行,也就是扭曲
的了。qt里面有很多需要注意的细节的了,希望对遇到同样问题的人有帮助。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: