山东省交通厅建设网站,做什么网站最赚钱,做城通网盘资源网站的源码,南京网站开发公司排名一般图像数据都是以RGBRGBRGB……字节流的方式(解码完成后的原始图像流)#xff0c;我说成字节流#xff0c;那就表明R#xff0c;G#xff0c;B的值各占一个字节#xff0c;在编程时表示的就是unsigned char * data。我们先来看一下QT中的QImage对象。在加载data数据前我说成字节流那就表明RGB的值各占一个字节在编程时表示的就是unsigned char * data。我们先来看一下QT中的QImage对象。在加载data数据前我们要确定QImage加载图像的空间分配足够大先假设data是由640*480像素的压缩数据解码得来的RGB(3字节)是一个像素故data的应该是640*480*3个字节比较一下下面两种方式QImage img(640,480,QImage::Format_RGB888);//24位unsigned char * p_bitsimg.bits();24位(3字节)一个像素那么p_bits所得到的空间应该是640*480*3个字节所以刚刚好一个字节对一个字节。所以我们这样赋值即可for(int i0;i640*480*3;i3){puiBits[i]data[i];puiBits[i1]data[i1];puiBits[i2]data[i2];}//接着就是将img转化成QPixmap填充到QWidgetQPixmap pixmapQPixmap::fromImage(img);pixmappixmap.scaled(widget-size());widget-setAutoFillBackground(true);QPalette palette;palette.setBrush(widget-backgroundRole(), QBrush(pixmap));widget-setPalette(palette);widget-repaint();另一种方式unsigned int * p_bits;QImage img(640,480,QImage::Format_RGB32);p_bits(uint*)img.bits();32位(4字节)一个像素那么p_bits所得到的空间应该是640*480*4个字节所以不能以上面的方式赋值。有没有注意到这里用了unsigned int而不用unsigned charunsigned int是4个字节的unsigned char 是1个字节的所以我们这里做的事情是将每一个RGB单元放到p_bits的每个unsigned int(4字节)中。因为p_bits是unsigned int指针所以p_bits[i]就是4个字节。所以应该这样写for(int i0;i640*480*3;i3){p_bits[i/3]qRgb(data[i],data[i1],data[i2]);}//接着就是将img转化成QPixmap填充到QWidgetQPixmap pixmapQPixmap::fromImage(img);pixmappixmap.scaled(widget-size());widget-setAutoFillBackground(true);QPalette palette;palette.setBrush(widget-backgroundRole(), QBrush(pixmap));widget-setPalette(palette);widget-repaint();